En basit (basit) toplu iş dosyası sürümü şöyle olurdu:
call :robo "C:\dir1\dir3\dir7" "C:\a1\a2\a3"
call :robo "C:\dir1\dir4\dir8" "C:\b1\b2\b3"
call :robo "C:\dir2\dir5\dir9" "C:\c1\c2\c3"
echo etc...
call :robo "C:\dir2\dir6\dir0" "C:\d1\d2\d3"
goto:eof
:robo
robocopy %1 %2 /MOVE /E
goto:eof
Boşlukları olması durumunda dizinleri alıntılamanız gerekir.
Dizinleri bir dosyadan okumak için şunu yapmalısınız:
directories.txt
:
C:\dir1\dir3\dir7,C:\a1\a2\a3
C:\dir1\dir4\dir8,C:\b1\b2\b3
C:\dir2\dir5\dir9,C:\c1\c2\c3
C:\dir2\dir6\dir0,C:\d1\d2\d3
Tırnaklara gerek yok ve virgül ile ayırın.
Sonra toplu iş dosyasında:
FOR /F "tokens=1-2* delims=," %%A IN (directories.txt) DO (
robocopy "%%A" "%%B" /MOVE /E
)
Ayrıca burada ... ilk robokopinin ne yaptığını görmek istiyorsanız /L
.
Buna benzer bir dosyanız varsa (birinci ve ikinci sütunu hizalamak için boşluk içeren), dizinlerden öncü ve sondaki boşlukları çıkarmak için bazı kodlar eklemeniz gerekir:
Tekrar directories.txt
:
C:\dir1\dir3\dir7\sada\asda , C:\a1\a2\a3
C:\dir1\dir4\dir8 , C:\b1\b2\b3
C:\dir2\dir5\dir9 , C:\c1\c2\c3
...
C:\dir2\dir6\dir0 , C:\d1\d2\d3
Ve bu toplu iş dosyası olarak:
@echo off
setlocal enabledelayedexpansion
FOR /F "tokens=1-2* delims=," %%A IN (directories.txt) DO (
call :trim dir1 %%A
call :trim dir2 %%B
robocopy "!dir1!" "!dir2!" /MOVE /E
)
goto:eof
:trim
set trimmed=%2
for /f "tokens=* delims= " %%c in ("%trimmed%") do set trimmed=%%c
for /l %%c in (1,1,100) do if "!trimmed:~-1!"==" " set trimmed=!trimmed:~0,-1!
set "%~1=%trimmed%"
goto:eof
Not: Dizinlerin gerçekten var olup olmadığını veya yalnızca bir sütunun dolu olup olmadığını görmek için hata denetimi yapılmaz ... vb ...
(ama elbette eklenebilir).