Otwórz plik wsadowy i wykonaj polecenia z tego miejsca

2

Moim zamiarem jest uruchomienie skryptu Perla latexdiff.pl z przenośnej wersji perla. Istnieje plik wsadowy portableshell.bat który tworzy środowisko dla perla. Jeśli go otworzę i napiszę perl latexdiff.pl additional_arguments, program działa dobrze. Jednak chcę to zautomatyzować. Stworzyłem plik wsadowy useLatexdiff.bat i umieść w nim następujące:

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

Środowisko perla jest poprawnie skonfigurowane, ale druga linia nie jest wykonywana. Jak mogę zrealizować drugą linię?

Uwaga: jest to częste pytanie. Innym przypadkiem jest otwarcie powłoki Uniksa po tym wykonuj polecenia Unix z tej powłoki.

Zoltán Csáti
źródło

Odpowiedzi:

0

Twój problem polega na tym, że plik wsadowy działa w następujący sposób: Wykonuje polecenie i czeka na zakończenie tego polecenia przed przejściem do następnego.

Tak więc w twoim przypadku czeka on na portableshell.bat, aż się ułoży, co prawdopodobnie nie nastąpi.

Na szczęście istnieje kilka metod, które można wykonać, aby wykonać polecenie i przejść do następnego bez czekania na zakończenie pierwszego. Aby wywoływać pliki wsadowe, możesz użyć wywołania filename.bat, aby je wywołać i natychmiast przejść do następnego wiersza.

Twój plik wsadowy wygląda tak:

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

Jeśli masz pliki wykonywalne, takie jak perl, który chcesz mieć to samo, użyj polecenia start.

Chociaż powyższe powinno działać, jeśli nie, możesz edytować plik portableshell.bat i dodać polecenie perl na samym końcu.

LPChip
źródło
Problem polega na tym, że portableshell.bat prawdopodobnie otwiera okno powłoki, w którym następne polecenie musi zostać wykonane w tym oknie powłoki i poza nim środowisko nadal nie jest „konfigurowane”, ponieważ jest to aplikacja przenośna. Bieganie perl losowo po pliku wsadowym prawdopodobnie spowoduje a file not found błąd. Czuję, że może to być najłatwiejsze do skryptu za pomocą AutoIt lub AutoHotkey.
Mokubai
Wprowadzenie call polecenie z przodu niczego nie zmieniło. @Mokubai Pracuję nad zestawem współdziałających przenośnych programów na kluczu USB. Czy AutoIt lub AutoHotkey wymagają dodatkowych programów do pracy? Jeśli to możliwe, pozostałbym w wierszu polecenia systemu Windows.
Zoltán Csáti
Nie możesz po prostu edytować pliku portableshell.bat i umieścić polecenie perl na samym końcu?
LPChip
@LPChip Dzięki, umieszczenie komendy perl na końcu portableshell.bat plik - choć niezbyt modułowy - działa. Możesz dołączyć swoją odpowiedź, aby inni późniejsi użytkownicy mogli ją łatwiej znaleźć.
Zoltán Csáti