I want to move only the Drawings folders to a new drive and folder structure, like this:
Esse arquivo em lote pode ajudar você. Ele encontra todas as subpastas "Desenhos", converte as partes dos caminhos de diretório para construir a nova estrutura de diretório e, em seguida, copia cada diretório encontrado com subdiretórios usando a ferramenta RoboCopy .
MUITO IMPORTANTE :
-
Certifique-se de colocar o arquivo em lote dentro da pasta " ... \ Estimating Files " e execute-o a partir de lá; caso contrário, defina manualmente a variável
sourceDir
. -
Antes de usar este script, você deve ajustar manualmente a contagem de tokens do loop
For
.Por exemplo, usei esta pasta de origem
C:\Source\Estimates\Estimating Files
, precisamos perder os primeiros quatro tokens porque queremos começar a contar depois da parteEstimating Files
, por isso eu definoTokens=4,5,6
no script abaixo, se você tem um caminho diferente, então você deve ajustar os tokens.Se o seu diretório de origem for
E:\Estimates\Estimating Files
, você deverá definir o parâmetro tokens assim:Tokens=3,4,5
. -
Se você quiser excluir automaticamente a estrutura de origem copiada, basta anexar um
/Move
nos parâmetros do RoboCopy.
Código-fonte
@Echo OFF
Set "sourceDir=%CD%"
Set "targetDir=C:\Target"
Set "findPattern=Drawings"
For /F "Tokens=4,5,6 Delims=\" %%a In (
'Dir /B /S /A:D "%sourceDir%\*%findPattern%"'
) Do (
Call Set "Token1=%%~a"
Call Set "Token2=%%~b"
Call Set "Token3=%%~c"
Call Set "sourcePath=%CD%\%%~a\%%~b\%%~c"
Call Set "targetPath=%targetDir%\%%Token1%%\%%Token1:~3%%\%%Token2:~3,2%%\%%Token2:~5%%\%%Token3%%"
Echo+
Call Echo Source: "%%sourcePath%%"
Call Echo Target: "%%targetPath%%"
(Call RoboCopy.exe "%%sourcePath%%" "%%targetPath%%" /E /ZB /COPYALL)1>Nul
)
Pause&Exit /B 0
Saída
Source: "C:\Source\Estimates\Estimating Files\E27001001A - Customer1\Drawings"
Target: "C:\Target\E27001%bl0ck_qu0te%1\A - Customer1\Drawings"
Source: "C:\Source\Estimates\Estimating Files\E27001001B - Customer2\Drawings"
Target: "C:\Target\E27001%bl0ck_qu0te%1\B - Customer2\Drawings"
Source: "C:\Source\Estimates\Estimating Files\E27001001C - Customer3\Drawings"
Target: "C:\Target\E27001%bl0ck_qu0te%1\C - Customer3\Drawings"
Source: "C:\Source\Estimates\Estimating Files\E27002002A - Customer1\Drawings"
Target: "C:\Target\E27002%bl0ck_qu0te%2\A - Customer1\Drawings"