existe alguma ferramenta que permita redirecionar a saída para a variável env no script * .cmd do windows?

3

Eu quero usá-lo assim:

echo some data | this-tool-m-searching-for -vn myvariable

ou

time | this-tool-m-searching-for -vn current_time

etc.

e depois

echo %myvariable%

produziria some data etc ...

Não se trata de eco ou apenas de tempo, quero dizer, qualquer programa que forneça saída para stdout.

    
por rsk82 13.05.2012 / 00:04

2 respostas

3

Esta é a construção usual, acredito:

for /F %i in ('time /t') do set current_time=%i

(como de costume, os sinais de porcentagem precisam ser duplicados em um script de comando).

Outra construção, embora desajeitada:

time /t > tempfile.txt
set /p current_time= < tempfile.txt

Parece não haver maneira de evitar o arquivo temporário; Se você usar um pipe, o comando set acontecerá em um subprocesso. (Em algumas situações, você pode canalizar a saída para uma segunda cópia do seu script em lote, mas esse tipo de coisa pode ficar feio rápido.)

Adicional

Para expandir meu último ponto, em resposta a uma pergunta nos comentários, aqui está um exemplo de arquivo em lote que canaliza a saída para uma nova instância de si mesmo:

if "%1" NEQ "" @goto %1
:step1
time /t | %0 step2
goto :eof
:step2
set /p current_time=
echo %current_time%
rem processing here...

Eu não acho que essa solução se adapte bem a scripts em lote mais complexos.

    
por 13.05.2012 / 00:39
2

Tente export.exe , parece fazer exatamente o que você procura.

    
por 13.05.2012 / 00:30