Відкрийте командний файл і виконайте команди звідти


2

Моя мета - запустити скрипт perl latexdiff.pl з портативної версії perl. Існує пакетний файл portableshell.bat яка встановлює середовище для perl. Якщо я відкрию його і введіть perl latexdiff.pl additional_arguments, програма добре працює. Однак я хочу автоматизувати його. Я створив пакетний файл useLatexdiff.bat і вкласти в нього наступне:

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

Середовище perl правильно налаштовано, але другий рядок не виконується. Як можна досягти виконання другої лінії?

Примітка: Це загальний питання. Іншим випадком використання є відкриття оболонки Unix і після того виконувати команди Unix з цієї оболонки.

Відповіді:


0

Ваша проблема полягає в тому, що пакетний файл працює наступним чином: він виконує команду і чекає завершення цієї команди перед переходом до наступної.

Так у вашому випадку, він чекає на portableshell.bat, поки він fihishes, який, ймовірно, не буває.

На щастя, існує декілька методів, які можна виконати, щоб виконати команду, і перейти до наступного, не чекаючи завершення першого. Для виклику пакетних файлів можна скористатися викликом filename.bat, щоб викликати його і негайно перейти до наступного рядка.

Ваш пакетний файл буде виглядати так:

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

Якщо у вас є виконувані файли, такі як perl, які ви хочете мати з тим же, що використовується, використовуйте команду start.

Хоча вищезазначене має працювати, якщо це не так, можливо, ви захочете відредагувати файл portableshell.bat і додати команду perl в самому кінці.


Проблема в тому, що portableshell.bat ймовірно, відкриває вікно оболонки, в якому наступна команда повинна бути виконана в і за межами цього вікна оболонки, оточення ще не "налаштовано", оскільки це портативний додаток. Біг perl випадково після пакетного файлу, ймовірно, призведе до a file not found помилка. Мені здається, що це може бути найпростішим для сценарію за допомогою AutoIt або AutoHotkey.
Mokubai

Введення call Команда спереду нічого не змінила. @Mokubai Я працюю над комплексом взаємодіючих портативних програм на USB-ключі. Чи потрібні AutoIt або AutoHotkey додаткові програми для роботи? Якщо це можливо, я б залишився у командному рядку Windows.
Zoltán Csáti

Чи не можете ви просто відредагувати файл portableshell.bat і помістити команду perl в самому кінці?
LPChip

@LPChip Дякуємо, поставивши команду perl в кінці portableshell.bat файл - хоча і не дуже модульний - працює. Ви можете додати свою відповідь, щоб інші пізніші користувачі могли легко знайти її.
Zoltán Csáti
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.