CMD: Bat to Exe Converter - Temp-Verzeichnis problem
ich bin mit 'Bat to Exe Converter' meine konvertieren batch-Dateien in exe-format.
Nun habe ich einige Probleme.
Immer wenn ich was konvertieren will, und ich 'Working Directory' , 'Aktuelle Verzeichnis', und ich beginne meine exe in echo on
- Modus, dies ist, was ich am Ende mit, um zu überprüfen, ob es eine bestimmte Datei in das Verzeichnis meiner exe:
the actual command: if not exist "%~dp0\file.txt" goto :nofile
output: if not exist "C:\Users\MyUser\AppData\Local\Temp\4CBC\\file.txt" goto :nofile
Kann mir jemand helfen mit diesem? Ich möchte es nicht in das temp-Verzeichnis, ich will es in das Verzeichnis meiner exe.
Dank.
InformationsquelleAutor Deniz Zoeteman | 2010-01-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ohne Bat to Exe durch den Autor geändert, ich glaube, Sie haben zwei Optionen:
Entfernen Sie die Notwendigkeit für den Zugriff auf %~dp0
Vielleicht kann man das Zusammenführen
file.txt
mit der include-option Bat to Exe in der EXE-Datei. Wenn dem so ist,"file.txt"
wird automatisch entpackt werden in das aktuelle Verzeichnis beim ausführen der kompilierten exe-Datei, und Sie können es dem Zugriff durch%CD%\file.txt
.Bekommen
%~dp0
von außen und übergeben Sie an die exe-Datei als Kommandozeilen-parameter.Kann dies durch einen einfachen starter
bat
Datei, die befindet sich im gleichen Verzeichnis wie die kompilierte Haupt-batch-Datei. Dieses Skript sollte die Zeile enthaltenIhrer kompilierten exe-Datei wird dann im Verzeichnis von %1. So können Sie packen alles in eine exe-Datei, aber der wichtigste Teil von ihm, vielleicht ist das ausreichend für Euch.
Gut, dann die 2. alternative könnte eine option für Sie. Oder, wenn Sie denken, Sie müssen wirklich alles in einer EXE-Datei, haben Sie prüfen, mit einem "echten" kompilierten Sprache?
die 2. sinnvoll erscheint. ist es möglich, dass eine andere variable %2 oder sowas? %1 ist bereits zugeordnet, um etwas anderes zu tun.
Nun, Sie können entweder versuchen, YourCompiled.Exe %%* %~dp0% oder YourCompiled.Exe %1 %~dp0%
InformationsquelleAutor Doc Brown
%cd% wird Ihnen das aktuelle Verzeichnis:
InformationsquelleAutor BlueRaja - Danny Pflughoeft
Anscheinend auch Ihre batch to exe converter einfach packt die batch-Datei und extrahiert es in ein temporäres Verzeichnis vor der Ausführung. Sehr simpel, nur schwer zu bekommen ist falsch (im Vergleich zu tatsächlich verstehen die batch-Datei), aber es führt zu Fehlern wie die, die du beschreibst.
Ihre beste Wette ist wahrscheinlich auf die Verwendung eines anderen batch to exe converter; einige von Ihnen sind tatsächlich ein wenig anspruchsvoller.
InformationsquelleAutor Joey
Verwenden
%CD%
statt%~dp0
.EDIT:
B2EC ist nicht real Konverter. Schöpfung Lage ausgestattet .cmd-Datei wurde gewählt, um
%TEMP%
- und dies ist eine gute Wahl. Anwendung nur fehlt die 3. option für das Arbeitsverzeichnis des Skripts .exe-Datei-Verzeichnis. Ich rate dir, eine mail an den Autor über das hinzufügen dieser.Unterschiedliche Wege .exe-Datei und erstellt .cmd führen zu dem Verlust der Informationen, d.h. wir sind nicht in der Lage zu wissen .exe-Verzeichnis und das aktuelle Verzeichnis in der gleichen Zeit, ohne die Bereitstellung zusätzlicher Informationen zum script (z.B. mittels Umgebungsvariable oder indem er als erste/Letzte argument für das Skript). Dieses Skript würde müssen damit umgehen und wir würden Ende schreiben cmd-Skripts, das speziell für diese Konverter, das ist schlecht.
%~dp0
- Skript-Verzeichnis (%TEMP%/.../
) - praktisch nutzlos,%cd%
- Arbeitsverzeichnis (wie in den Konverter) - derzeit gibt es nur 2 Optionen: Aktuelles Verzeichnis (working directory .exe) und das temporäre Verzeichnis (eigentlich gleich%~dp0
, aber ohne abschließenden backslash)Ich denke, es kann gelöst werden, indem patchen
cmd.exe
Instanz im Speicher zum ändern der script-Pfad, aber das B2EC-Entwickler in der Pflicht.Seite Hinweis: Normale ausführbare Dateien können ganz einfach ausgeführt werden mit angegeben das 0. argument durch die Bereitstellung appriopriate
lpApplicationName
undlpCommandLine
zuCreateProcess
Funktion. Befehl Dateien erfolgt übercmd.exe
, also das 0. argument kann nicht auf diese Weise gesetzt werden.Eigentlich zeigt es aktuelle Verzeichnis, wenn Sie gewählt haben,, working directory das aktuelle Verzeichnis (das ist die Standardoption). Dieser Konverter ist nicht echt-Konverter, weil es eben schafft .bat/.cmd-Datei in
%TEMP%
Verzeichnis und das ist, warum%~X0
funktioniert nicht, wie Sie wollen.ich versuchte es, und es scheint, es gibt noch das Arbeitsverzeichnis, so zum Beispiel, wenn eine Datei als exe-Datei befindet sich in "MyUser/Desktop/test.exe" und ich führe es auch auf der Kommandozeile aus "C:\Users\MyUser" das Arbeitsverzeichnis ist immer noch 'MyUser'. Ich will, dass es den Speicherort der Datei, so 'MyUser/Desktop'!
InformationsquelleAutor przemoc
Dies ist im Allgemeinen keine gute Idee. Erstens ist es anfällig für Fehler und Instabilität des Konverters auf verschiedene cmd-features. zweitens, ein entschlossener hacker können immer noch decodieren, was Sie tun, mit der Gruppe. Mein Vorschlag, wenn Sie so Angst vor Menschen, die suchen in Ihrem batch -,
ODER, nicht mit batch überhaupt
InformationsquelleAutor ghostdog74
Dies ist eine 2.5 Jahre alte Thema, aber es gibt eine Antwort dazu, so bin ich Entsendung für jemand anderes, das passiert zu finden, diese in einen Suche.
B2EC geschrieben von Fatih Kodak, hat eine option auf "Submit aktuelle Verzeichnis".
Wenn dieses verwendet wird, können Sie die Referenz %1 in der batch-Datei der Pfad der EXE-Datei, die ausgeführt wurde (anstatt auf den Pfad der extrahierten FLEDERMAUS, die ist wirklich ausgeführt wird).
Mauszeiger über die betreffende option in der Benutzeroberfläche zeigt "Submit das aktuelle Verzeichnis als letzten parameter". Die "Letzte parameter" in meiner Verwendung wurde immer %1, aber Sie können testen Sie Ihren code, um sicher zu sein.
InformationsquelleAutor RLH
Die neueste version 2.1.4 zum Zeitpunkt des Schreibens, Bat to Exe, die von Fatih Kodak schafft eine Umgebungs-Variable zur Laufzeit ausgetauscht werden können, statt %~dp0 Verweis auf die Exe-Pfad. Daher können Sie einfach ersetzen Sie %-dp0 %b2eprogrampathname% in die original-batch-Datei.
InformationsquelleAutor Robert Wigley
Können Sie externe Ordner mit f2ko batch to exe converter. Mit
einen separaten Ordner für Unterprogramme versäubern kann ein Projekt-Ordner.
Zu nennen mysubroutine, die sich in mysubroutinesfolder\mysubroutine,
Kann der Anruf getätigt werden ein Einzeiler:
wo xqt.cmd ist ein Programm, das den Anruf für Sie:
(%* bedeutet "alle Argumente").
Auf diese Weise ist Ihre batch-Programme ausführen als batch, und UNVERÄNDERT wird Sie
kompilieren mit dem bat to exe converter, die Schaffung eines völlig Ordner eigenständige ausführbare Datei. Wählen Sie "temporäre Verzeichnis",
und alle Unterprogramme/ausführbaren Dateien in Ihrem Ordner mysubroutines
durch "wählen Sie alle" mit den cursor wie gewohnt, dann drücken Sie "kopieren".
Werden Sie sicher, dass Sie die xqt.cmd-Programm zu; legen Sie es "außerhalb" Ihrer mysubroutines Ordner. Stellen Sie sicher, dass Sie zugänglich, indem Sie Ihr Haupt-Programm. Denken Sie daran, wählen Sie x64, wenn Sie
sind gelaufen auf einem x64-Maschine, oder die ausführbare Datei nicht finden SYSTEM32
- Dateien. Finden Sie f2k0 batch-to-exe-converter:
http://www.f2ko.de/programs.php?pid=b2e
InformationsquelleAutor pollaris
Versuchen, diese Entwicklungsumgebung für batch-Skripte, Batch Compiler . Es hat alles, was Sie brauchen, um zu entwickeln, eine batch-Programm.Und kompilieren Sie in stabile stand-alone ausführbare Datei (Exe-Datei).
Schnellen download : http://bc.gotek.info/files/BatchCompiler159.zip
Prost!
InformationsquelleAutor isuru arunoda