Бен верен - перенаправление не считается аргументом. Перенаправление обрабатывается до вызова скрипта.
В качестве альтернативы подсчету аргументов как теста вы можете просто посмотреть на аргументы, переданные в ваш скрипт
echo %*
Другой вариант, когда вы используете START или CMD / C, это повторить% CMDCMDLINE%, чтобы увидеть точную строку, которая использовалась для запуска CMD (включая параметры). Иногда очень удобно помогать диагностировать проблемы разбора, выхода и расширения. Это также удобно, когда неявная реализация CMD, например, с FOR /F %%A IN ('command')
или command1|command2
(каждая сторона канала получает свой собственный сеанс CMD).
Мне любопытно, почему вы используете START /B script 2>logFile
вместо CALL script 2>logFile
? Они оба должны работать, но я думаю, что второй вариант проще и эффективнее.