Файл CMD для перенаправления вывода дочернего процесса

Файл CMD для перенаправления вывода дочернего процесса

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

Мне они подходят. :)

Связанный контент