Usando saída canalizada como nome de arquivo em cmd

0

Eu quero usar pipes para redirecionar a saída de um programa para outro como:

type file.txt file2.txt | sort | someprog

Agora tenho o problema de que someprog não é capaz de usar o STDOUT canalizado e deseja um parâmetro de arquivo:

someprog somefile.txt

Como posso dizer a someprog para usar o STDOUT canalizado? No bash (Linux) eu usaria um comando como someprog - , mas isso não parece funcionar dentro do cmd.

Criar um arquivo temporário para isso, infelizmente, não é uma opção para mim.

    
por Freigeist 06.12.2014 / 08:02

2 respostas

0

Um procedimento :unique retorna um nome de arquivo temporário da data e hora momentâneas. A precisão do tempo é de aproximadamente 3 milissegundos, probabilidade de colisão muito próxima de zero.

@echo off
set "somefile="

call :unique somefile
rem echo %somefile%

type file.txt file2.txt 2>NUL | sort > "%tmp%\%somefile%.txt"
someprog "%tmp%\%somefile%.txt"
erase "%tmp%\%somefile%.txt"
goto :eof

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:unique
@SETLOCAL enableextensions enabledelayedexpansion
  set "unq="
  for /F %%G in ('WMIC OS GET localdatetime^|findstr /I /V "local"') do (
    set "unq=%%G")
  set "unq=%unq:.=%"
  set "unq=%unq:+=%"
@ENDLOCAL &set "%1=%unq%"
exit /B
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    
por 06.12.2014 / 17:16
0

Referência Redirecionamento

commandA & commandB Run commandA and then run commandB

commandA && commandB Run commandA, if it succeeds then run commandB

Tente o seguinte:

type file.txt file2.txt | sort > mytempfile && someprog mytempfile && del mytempfile
    
por 06.12.2014 / 11:45