Saída de nomes de arquivos com loop for em um arquivo de lote

0

Eu quero renomear arquivos com um comando em lote e capturar os arquivos originais e renomeados em uma lista para fornecer uma referência cruzada (fazer um DIR /OS >file antes e depois do arquivo em lote não é suficientemente rigoroso).

O arquivo abaixo executa a renomeação, mas meu entendimento não é bom o suficiente para fazer o bit de saída funcionar (se é que isso é possível). Além disso, a saída no exemplo abaixo é diferente dependendo se a saída é para arquivo ou tela.

Eu quero entender mais sobre isso:

@echo off
set /a c=%1
setLocal ENABLEDELAYEDEXPANSION
For %%G in (*.tif) do (
    echo %%G >infile.txt
    ren %%G abc.!c!.tif
    set /a c=c+1
    echo %%G >outfile.txt
)
endlocal
    
por user130218 25.04.2012 / 16:00

1 resposta

0

Depois de dormir, descobri a resposta para o problema. Eu só tenho que escrever o nome do arquivo que está prestes a ser renomeado como eu 'sei' o que estou prestes a chamá-lo! Óbvio no final.

set /a c=%1
set param=%2
setLocal ENABLEDELAYEDEXPANSION
FOR  %%i in (*.tif) do (
        echo %%i >>in.txt
        ren %%i %param%!c!.tif
        echo %param%!c!.tif >>out.txt
        set /a c=c+1
)
endlocal

Tudo o que preciso fazer agora é colocar em um teste para impedir que ele renomeie novamente o primeiro arquivo que ele renomeou (pode acontecer dependendo do número que está sendo usado no var 'c' e dos nomes dos arquivos originais).

    
por 26.04.2012 / 12:22