arquivo CMD para redirecionamento da saída do processo filho

0

Eu 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 o redirecionamento de saída da execução do comando. Eu tentei algumas variantes como call %1 > %2 , start %1 > %2 no arquivo 'q.cmd', com chamadas como q "echo test" "log.txt" e q 'echo test' 'log.txt' e %1 ou call %1 com q "echo test > log.txt" , mas nada funciona. Eu também tentei com ^ antes de > . Na maioria dos casos, ele imprime "'echo não é reconhecido como um commad interno ou externo ..." 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?

    
por SerG 07.07.2014 / 15:30

1 resposta

1

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 um 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ê quiser uma quantidade dinâmica de argumentos. Olhe para o uso do PowerShell.

Dito isto, se você quer algo simples, não tão flexível, e ainda é um arquivo de lote, então tente o seguinte no seu arquivo de lote: %2 %3 > %1 .

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

I.E .: q log.txt echo Test ou q log.txt echo "string with spaces to echo" .

Isso funciona para mim. :)

    
por 07.07.2014 / 20:11