Пакетный скрипт для выполнения терминальной команды

Я новичок в сценарии Bacth пытаюсь выполнить следующую терминальную команду, используя командный файл

"C:\Program Files\dark\dark" -z "lip" -Z doc > sample.doc

Следующая команда выводит некоторые данные в качестве образца документа.

пока я запускаю командный файл, получаю команду как "C:\Program Files\dark\dark" -z "lip" -Z doc 1>sample.doc

1 добавляется перед > знак. Есть ли способ избежать этого?

1 ответ

Существует набор потоков данных, связанных с каждым консольным сеансом / командой / пакетным сценарием, и каждый поток имеет номер: 0 = stdin, 1 = stdout, 2 = stderr, Стандартный поток вывода номер 1, поэтому

command > file  ==  command 1> file

обе команды эквивалентны, что означает: "выполнить команду и перенаправить stdout "Поток команды в файл". Второй - просто более явный, и это то, что вы видите, когда echo не отключен, и пакетный анализатор выводит команду, которая будет выполнена. Вы также можете попробовать написать это как

>file command

и результирующая команда, отображаемая на консоли, будет такой же. Парсер выполняет свою работу и повторяет полученную команду.

Таким образом, вы можете увидеть команду или скрыть ее с

@command > file

или же

@echo off
command > file

но выполненная команда будет такой же.

Другие вопросы по тегам