Übergeben Sie die Argumente der .BAT-Datei an die ausgeführte EXE-Datei

370
Francky Leyn

Ich brauche ein DOS-.bat-Skript, das ALLE Argumente an ein EXE-Programm überträgt.

Zum Beispiel das DOS-Skript main.bat, das die .exe program.exe aufruft:

program.exe ???? 

Die Frage ist was ??? sollte sein. Die Argumente müssen ALLE in Anführungszeichen übergeben werden: Wenn es Dateinamen mit Leerzeichen gibt, müssen diese intakt bleiben. Unter UNIX / POSIX wird dies als "quoted array" bezeichnet, da die Argumente ein Array bilden (ARGV [x]) und jedes Argument in Anführungszeichen gesetzt werden muss.

0
Hallo und willkommen bei SuperUser. Wir sind keine "Bitte schreibe mir ein Skript" Website. Wenn Sie uns Ihr Skript zur Verfügung stellen, können wir Ihnen einschränken, warum die Dinge nicht funktionieren. Allerdings ist es ein bisschen schwierig, dein Ziel zu verstehen, und ein begleitendes Skript würde auf jeden Fall helfen. LPChip vor 5 Jahren 0
Das grundlegende Problem ist, dass es 2 .exe gibt: eine für die 32-Bit-Version und eine für die 64-Bit-Version. Nennen wir sie program32.exe und program64.exe. Diese Namen können momentan nicht geändert werden. Ich möchte jedoch generische Skripte schreiben, die je nach Installation von .exe abrufen. Ich muss nur wissen, wie Sie unter DOS Argumente in Anführungszeichen übergeben können. Ich brauche kein echtes Skript. Ich brauche 1 Onliner. ZB: wenn ich tippe: Francky Leyn vor 5 Jahren 0
'main.bat "Dateiname mit Leerzeichen.jpg" ", dies muss für die 64-Bit-Version der DOS-Systemaufruf' program64.exe" Dateiname mit Leerzeichen.jpg "" sein. Francky Leyn vor 5 Jahren 0

1 Antwort auf die Frage

0
LPChip

Sie können einfach mit% * alles, was an die .bat-Datei übergeben wurde, an alles andere übergeben.

Wenn Sie der Batchdatei "Wörter mit Leerzeichen" übergeben, wird diese als 1 Parameter in Anführungszeichen angezeigt und als solcher übergeben. Wenn Sie das "" nicht angeben, leitet der Batch ihn weiterhin an das Programm weiter, aber das Programm sieht es als separate Parameter. Es hängt wirklich davon ab, wie die Batch-Datei aufgerufen wird, um zu wissen, ob diese Zitate vorhanden sind oder nicht, und ob dies erforderlich ist. Wenn Sie z. B. eine Datei im Explorer in die Batchdatei ziehen und ablegen, fügt der Explorer die Anführungszeichen für Sie hinzu. Wenn Sie an der Eingabeaufforderung manuell eingeben, kann der Benutzer nach den Anführungszeichen suchen.

So:

program.exe %0 

sollte in Ihrem Fall ausreichen.

Wenn Sie in der Befehlszeile Dateinamen mit der Registerkarte automatisch vervollständigen, werden Anführungszeichen automatisch hinzugefügt, wenn sie erforderlich sind. Auch wenn die Anführungszeichen den Anschein erwecken, dass Sie sie bearbeiten müssen, um mit der Eingabe fortfahren zu können, haben Sie wirklich keine zu. Die Eingabeaufforderung ist intelligent genug.

Beispiel: Hier tippe ich prog, drücke zweimal die Tabulatortaste, tippe dann weiter und drücke noch einmal die Tabulatortaste.

C:\>_  C:\>cd prog_ (tab)  C:\>cd "Program Files"_ (tab)  C:\>cd "Program Files (x86)"_  C:\>cd "Program Files (x86)"\Micro_ (tab)  C:\>cd "Program Files (x86)\Microsoft Office"_ (enter)  C:\Program Files (x86)\Microsoft Office>_ 
Wenn Sie ein .bat-Skript haben, muss ich dann einen Statuscode zurückgeben? Schau dir das an: Francky Leyn vor 5 Jahren 0
Nein, Sie müssen keinen Statuscode zurückgeben. Standardmäßig ändert jeder Befehl im Skript den Statuscode in Abhängigkeit von seinem Ergebnis und wird in% errorlevel% ^ gespeichert. Bat-Dateien selbst ändern dies nicht, es sei denn, Sie machen es ausdrücklich und es ist nicht notwendig. LPChip vor 5 Jahren 0
Kommentare sollen keine Postleitzahl schreiben. Ihre ursprüngliche Frage wurde beantwortet. Ich schlage vor, eine neue Frage mit dem Code in einem Codeblock zu veröffentlichen, und wir können Ihnen helfen, warum die Dinge nicht wie erwartet funktionieren. LPChip vor 5 Jahren 0
Nur in Fragen kannst du sie posten. Ein Codeblock wird durch Eingabe von 4 oder mehr Leerzeichen am Zeilenanfang geschrieben. Siehe auch die Formatierungshilfe, wenn Sie eine neue Frage erstellen. LPChip vor 5 Jahren 0