Como posso ter apenas um único comando de movimento em um arquivo de lote?

1

Eu tenho um arquivo de lote existente que tenta mover arquivos de dois diretórios para dois locais diferentes. No momento, eles são chamados de 2 comandos de movimento separados. Eu estou querendo simplesmente o código ainda mais e queria saber se havia uma maneira de fazer isso

@echo off
for %%a in (C:\Test\*.*) do if "%%~xa" == "" move /Y "C:\Test\%%~na%%~xa" "D:\Done" 
for %%i in (C:\Sample\*.*) do if "%%~xi" == "" move /Y "C:\Sample\%%~ni%%~xi" "D:\Done"

O outro cenário é quando os caminhos de destino são diferentes da seguinte forma

@echo off
for %%a in (C:\Test\*.*) do if "%%~xa" == "" move /Y "C:\Test\%%~na%%~xa" "D:\Done" 
for %%i in (C:\Sample\*.*) do if "%%~xi" == "" move /Y "C:\Sample\%%~ni%%~xi" "E:\Done"
    
por PeanutsMonkey 28.08.2012 / 04:45

1 resposta

0

Seu comando existente:

for %%a in (C:\Test\*.*) do if "%%~xa" == "" move /Y "C:\Test\%%~na%%~xa" "D:\Done" 

Diz "se o arquivo não tiver extensão, em seguida, mova-o para d: \ Done" - não está claro por que você está fazendo os testes de nome e extensão no movimento. Parece que isso seria igualmente eficaz:

for %%a in (C:\Test\*.*) do if "%%~xa" == "" move /Y "%%a" "D:\Done" 

Nesse caso, isso faria os dois diretórios na mesma linha:

for %%a in (C:\Test\*.* C:\Sample\*.*) do if "%%~xa" == "" move /Y "%%a" "D:\Done" 

Quanto a escolher diferentes diretórios de destino, isso dependeria inteiramente dos critérios.

    
por 28.08.2012 / 08:16