Мне нужен командный файл, который получает два параметра: команду (имя файла с некоторыми аргументами) и путь к файлу - для перенаправления вывода выполнения команды.
Я пробовал несколько вариантов, таких как 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 ответ
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"
.
Это работает для меня. :)