Arquivo CMD para redirecionamento da saída do processo filho

Arquivo CMD para redirecionamento da saída do processo filho

Preciso de um arquivo em lote que receba dois parâmetros: um comando (nome do arquivo com alguns argumentos) e um caminho para um arquivo - para redirecionamento de saída da execução do comando. Tentei algumas variantes como call %1 > %2, start %1 > %2no arquivo 'q.cmd', chamando como q "echo test" "log.txt"e q 'echo test' 'log.txt'e %1ou call %1com q "echo test > log.txt", mas nada funciona. Eu também tentei ^antes >. Na maioria dos casos ele imprime " 'echo não é reconhecido como uma vírgula interna ou externa..." ou algo assim e às vezes cria 123.txt vazio ou com algumas linhas de serviço, mas não com "teste" como eu preciso. Como posso resolver o problema?

Responder1

q "echo test" "log.txt"estaria alimentando dois parâmetros.

"echo test" seria por si só, e não é mais "Echo" seguido de "test" como argumento para Echo, mas sim um único comando chamado "echo test", que é inválido.

Você precisa separar os argumentos dos comandos, e realmente o script em lote NÃO é a melhor maneira de fazer isso, especialmente se você deseja uma quantidade dinâmica de argumentos. Procure usar o PowerShell.

Dito isto, se você quiser algo simples, não tão flexível e ainda assim um arquivo em lote, talvez tente o seguinte em seu arquivo em lote: %2 %3 > %1.

Em seguida, basta especificar primeiro o arquivo de saída, seguido do comando, seguido do argumento que deseja usar com esse comando.

Ou seja: q log.txt echo Test, ou q log.txt echo "string with spaces to echo".

Isso funciona para mim. :)

informação relacionada