Para loop no arquivo em lote que não move o arquivo

1

Estou fazendo um loop em um diretório específico e, se houver um arquivo zip ou arquivos, eles serão movidos para uma pasta secundária nesse diretório, mas o código abaixo parece não funcionar, ou seja, ele não move o arquivo. O que estou fazendo errado?

for %%i in (D:\test\*.*) do if %%~xi == ".zip" move /Y "D:\test\%%~ni%%~xi" "D:\test\complete"

    
por PeanutsMonkey 27.08.2012 / 01:15

1 resposta

3

Ao comparar as extensões de arquivo, coloque a extensão do arquivo atual entre aspas, assim:

for %%i in (D:\test\*.*) do if "%%~xi" == ".zip" move /Y "D:\test\%%~ni%%~xi" "D:\test\complete"

Eu testei e funciona bem.

Para usar uma sub-rotina, tente isto:

for %%i in (D:\test\*.*) do call :checkextension %%i

:checkextension
if "%~x1" == ".zip" move /Y "%~1" "D:\test\complete"
goto:eof

Observe como o caminho de cada arquivo ( %%i ) é passado como um parâmetro para a sub-rotina :checkextension , que então acessa como %~1 (ou %~x1 quando somente a extensão é necessária).

    
por 27.08.2012 / 01:18