Compare a saída do comando “DOS” para algo

0

(pelo DOS eu quero dizer windows cmd.exe - eu não quero impor o powershell ou similar no usuário final)

Eu quero executar um arquivo de linha de comando que imprime a saída para CON / a tela.

Eu quero capturar essa saída e compará-la a uma saída esperada.

... em um arquivo .bat / .cmd?

Especificamente, o identify comando do ImageMagick , e eu quero rodar este + 300 arquivos e compare os tamanhos reais aos tamanhos esperados.

Exemplo de saída

:

$ identify rose.jpg

rose.jpg JPEG 640x480 sRGB 87kb 0.050u 0:01

    
por Richard Le Mesurier 22.02.2013 / 14:03

2 respostas

1

Se eu entendi a pergunta corretamente, você quer executar o comando identify em todos os arquivos jpg em um diretório e capturar a saída desse comando em um arquivo de texto para comparação posterior. A comparação, no entanto, não é parte da especificação?

Algo como a linha abaixo deve fazer esse trabalho. Basta executá-lo a partir da pasta que os arquivos jpg estão localizados:

for /R %%X in (*.jpg) do identify %%X >> PicInfo.txt

Isto irá capturar a linha rose.jpg JPEG ... para cada arquivo .jpg que você tem no diretório (e subdiretórios graças a '/ R') que você executa o comando e o anexa ao arquivo PicInfo.txt.

    
por 22.02.2013 / 14:47
1

Sua pergunta é um pouco difícil de entender. Eu suponho que você fez algo como

@echo off
for %%X in (*.jpg) do (
    identify "%%X" > "otherdir\%%X.id"
)

em algum momento no passado, criando arquivos com nomes como rose.jpg.id , e agora você quer verificar se os arquivos JPEG não mudaram. Eu sugiro

@echo off
for %%X in (*.jpg) do (
    identify "%%X" > "tempdir\%%X.id.tmp"
    fc "tempdir\%%X.id.tmp" "otherdir\%%X.id" > nul
    if errorlevel 1 (
        echo "tempdir\%%X.id.tmp" and "otherdir\%%X.id" differ.
    ) else (
        del "tempdir\%%X.id.tmp"
    )
)

fc é o programa File Compare da linha de comando do Windows.

    
por 22.02.2013 / 23:18