Robocopy / XD Tidak Akan Bekerja Dengan Jalur Relatif


13

Saya mencoba menjalankan /MOVEperintah robocopy tetapi mengecualikan beberapa subdirektori yang ditentukan dengan /XDflag.

robocopy ".\CurrentDir" ".\NewDir" /XD ".\CurrentDir\SubDir1" ".\CurrentDir\SubDir2" /E /MOVE

Sayangnya itu mengabaikan /XDopsi dan memindahkan segalanya. Jika saya menggunakan jalur absolut pada semuanya, itu berfungsi dengan baik, tapi saya ingin ini fleksibel. Apakah ada cara untuk membuatnya bekerja dengan jalur relatif?


3
Perlu dicatat bahwa Anda dapat mengubah jalur relatif menjadi jalur absolut dengan sedikit usaha daripada yang mungkin dipikirkan, dengan menggunakan %CD%variabel lingkungan. Contoh: robocopy ".\CurrentDir" ".\NewDir" /XD "%CD%\CurrentDir\SubDir1" "%CD%\CurrentDir\SubDir2" /E /MOVE
gbr

Jawaban gbr harus menjadi jawaban yang benar. (mengingat Anda tidak perlu ".." di jalur relatif)
Sake

Jawaban:


14

Folder yang ditentukan untuk /XDmerujuk ke folder (untuk mengecualikan) yang ada dalam folder sumber, jadi Anda hanya menentukan nama folder yang ingin Anda kecualikan, tanpa menentukan hubungan induk.

yaitu:

robocopy ".\CurrentDir" ".\NewDir" /XD "SubDir1" "SubDir2" /E /MOVE

6
Sayangnya ini tidak berfungsi untuk subdirektori di level 2 dan lebih tinggi yaitu / XD "SubDir1 / SubDir11".
truthseeker

@truthseeker - Anda benar. Ini berfungsi untuk folder tingkat pertama, tetapi tidak ada yang lebih rendah. Untuk itu, Anda harus menggunakan jalur sumber absolut (mis. "/ Xd% ~ dp0CurrentDir \ Folder1 \ Subfolder1"), maka ia akan mengabaikan "Subfolder1" dengan benar tetapi menyinkronkan "Folder1" dll. Anda tidak dapat menggunakan jalur relatif, dan Anda tidak dapat menggunakan jalur tujuan.
rocketmonkeys

0

Berikut ini dapat membantu - itu memang menangani masalah jalur relatif secara langsung - tetapi memang memungkinkan banyak mengecualikan direktori dan sub direktori.

Jika Anda hanya mengecualikan folder tingkat atas - cukup gunakan nama folder - misalnya APC. Namun jika Anda melakukan sub folder - Anda memerlukan seluruh path. Path harus sepenuhnya mencocokkan path sumber + path ke subfolder. Saya telah mengujinya dengan berbagai cara dan ini adalah satu-satunya cara saya bisa membuatnya bekerja. Format file batch / cmd ini juga memungkinkan spasi di path atau nama file.

setlocal
set Source_path="\\usatlvmpdroadm1\C$\Installs"
set Destination_path="C:\Robo"
set Log_Path_and_File="C:\RoboCopy_Log_Files\01-Installs C drive to Robo C drive.txt"
set ED1="APC"
set ED2="\\usatlvmpdroadm1\C$\Installs\Dell\Dell MD3420 Firmware"

robocopy.exe %Source_path% %Destination_path% /COPYALL /ZB /MIR /MT:128 /DCOPY:T /XA:SH /XD %ED1% /XD %ED2% /XJ /XJD /R:2 /W:1 /NDL /NP /TEE /LOG:%Log_Path_and_File%

endlocal
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.