Распознается ли перенаправление в качестве аргумента при выполнении скрипта / программы? - PullRequest
2 голосов
/ 16 января 2012

У меня есть программа пакетного файла, которая вызывается из другого пакетного файла, поэтому я могу перенаправить вывод ошибок в файл. При запуске команды START /B "C:\Some\Script" 2>"C:\Some\Log.log" Перенаправление распознается как аргумент?

Просто вопрос без реальной пользы (по крайней мере, я могу сказать), просто из любопытства.

Ответы [ 2 ]

2 голосов
/ 16 января 2012

Бен верен - перенаправление не считается аргументом. Перенаправление обрабатывается до вызова скрипта.

В качестве альтернативы подсчету аргументов как теста вы можете просто посмотреть на аргументы, переданные в ваш скрипт

echo %*

Другой вариант, когда вы используете START или CMD / C, это повторить% CMDCMDLINE%, чтобы увидеть точную строку, которая использовалась для запуска CMD (включая параметры). Иногда очень удобно помогать диагностировать проблемы разбора, выхода и расширения. Это также удобно, когда неявная реализация CMD, например, с FOR /F %%A IN ('command') или command1|command2 (каждая сторона канала получает свой собственный сеанс CMD).

Мне любопытно, почему вы используете START /B script 2>logFile вместо CALL script 2>logFile? Они оба должны работать, но я думаю, что второй вариант проще и эффективнее.

2 голосов
/ 16 января 2012

Нет, это не так. Попробуйте использовать это в качестве тестового сценария, чтобы проверить:

set argC=0
for %%x in (%*) do Set /A argC+=1

echo %argC%

В этом файле argC - количество аргументов. (Источник: Викиучебники , через этот ответ .)

...