Мне нужен пакетный файл, который получает два параметра: команду (имя файла с некоторыми аргументами) и путь к файлу - для перенаправления вывода выполнения команды. Я пробовал некоторые варианты, такие как 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 is not recognize as an internal or external commad..." или что-то вроде этого и иногда создает пустой 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"
.
Мне они подходят. :)