Мне нужен командный файл, который получает два параметра: команду (имя файла с некоторыми аргументами) и путь к файлу - для перенаправления вывода выполнения команды. Я пробовал несколько вариантов, таких как call %1 > %2 , start %1 > %2 в файле 'q.cmd', с вызовом q "echo test" "log.txt" и q 'echo test' 'log.txt' и %1 или call %1 с помощью q "echo test > log.txt" но ничего не работает. Я также попробовал это с ^ перед > . В большинстве случаев он печатает «echo не распознается как внутренняя или внешняя запятая ...» или что-то в этом роде и иногда создает пустой 123.txt или с некоторыми служебными строками, но не с "test", как мне нужно. Как я могу решить проблему?

1 ответ1

1

q "echo test" "log.txt" будет передавать два параметра.

"echo test" будет сам по себе, и больше не будет "Echo" с последующим "test" в качестве аргумента для Echo, а вместо этого будет единственной командой под названием "echo test", которая недопустима.

Вам необходимо отделить аргументы от команд, и на самом деле пакетный сценарий НЕ лучший способ сделать это, особенно если вы хотите динамическое количество аргументов. Взгляните на использование PowerShell вместо этого.

Сказав это, если вы хотите что-то простое, не очень гибкое и все еще пакетный файл, то, возможно, попробуйте следующее в вашем пакетном файле:%2 %3 > %1 .

Затем сначала укажите выходной файл, затем команду, а затем аргумент, который вы хотите использовать с этой командой.

IE: q log.txt echo Test или q log.txt echo "string with spaces to echo" .

Это работает для меня. :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .