Öffnen Sie die Batchdatei und führen Sie die Befehle von dort aus aus

364
Zoltán Csáti

Ich beabsichtige, ein Perl-Skript latexdiff.plvon einer portablen Version von Perl aus auszuführen. Es gibt eine Batchdatei, portableshell.batdie die Umgebung für Perl einrichtet. Wenn ich es öffne und tippe perl latexdiff.pl additional_arguments, funktioniert das Programm gut. Ich möchte es jedoch automatisieren. Ich habe eine Batchdatei erstellt useLatexdiff.batund folgendes eingefügt:

portableshell.bat perl ..\MiKTeX\texmfs\install\scripts\latexdiff\latexdiff.pl 

Die Perl-Umgebung ist ordnungsgemäß eingerichtet, die zweite Zeile wird jedoch nicht ausgeführt. Wie kann ich die zweite Zeile ausführen?

Hinweis: Dies ist eine häufige Frage. Ein anderer Anwendungsfall besteht darin, eine Unix-Shell zu öffnen und danach Unix-Befehle von dieser Shell aus auszuführen.

2

1 Antwort auf die Frage

0
LPChip

Ihr Problem ist, dass eine Batchdatei folgendermaßen funktioniert: Sie führt einen Befehl aus und wartet, bis der Befehl beendet ist, bevor der nächste Befehl ausgeführt wird.

In Ihrem Fall wartet es also auf portableshell.bat, bis es angezeigt wird, was wahrscheinlich nicht der Fall ist.

Glücklicherweise gibt es mehrere Methoden, um einen Befehl auszuführen und zum nächsten zu springen, ohne auf den ersten Befehl zu warten. Zum Aufrufen von Batchdateien können Sie den Aufruf dateiname.bat verwenden, um die Datei aufzurufen und sofort zur nächsten Zeile zu springen.

Ihre Batchdatei würde folgendermaßen aussehen:

call portableshell.bat perl ..\MiKTeX\texmfs\install\scripts\latexdiff\latexdiff.pl 

Wenn Sie über ausführbare Dateien verfügen, wie z. B. die Perl-Datei, mit der dasselbe geschehen soll, verwenden Sie den Befehl start.

Wenn dies nicht funktionieren sollte, möchten Sie möglicherweise die Datei portableshell.bat bearbeiten und am Ende den perl-Befehl anhängen.

Das Problem ist, dass `portableshell.bat` wahrscheinlich ein Shell-Fenster öffnet, in dem der nächste Befehl innerhalb und außerhalb des Shell-Fensters ausgeführt werden muss. Die Umgebung ist immer noch nicht" eingerichtet ", da es sich um eine portable App handelt. Das zufällige Ausführen von `perl` nach der Batch-Fule führt wahrscheinlich zu einem` file not found'-Fehler. Es fühlt sich für mich am einfachsten für ein Skript mit AutoIt oder AutoHotkey an. Mokubai vor 6 Jahren 0
Das Vornehmen des Befehls 'call' änderte nichts. @Mokubai Ich arbeite an einer Reihe interoperierender tragbarer Programme auf einem USB-Stick. Benötigt AutoIt oder AutoHotkey zusätzliche Programme, um zu funktionieren? Wenn möglich, würde ich bei der Windows-Eingabeaufforderung bleiben. Zoltán Csáti vor 6 Jahren 0
Können Sie nicht einfach die Datei portableshell.bat bearbeiten und den perl-Befehl ganz am Ende platzieren? LPChip vor 6 Jahren 0
@LPChip Danke, der perl-Befehl am Ende der `portableshell.bat` -Datei steht - obwohl nicht sehr modular -. Sie können Ihre Antwort anfügen, damit andere Benutzer sie später leichter finden können. Zoltán Csáti vor 6 Jahren 0