Robocopy / XD Göreli Yollarla Çalışmıyor


11

Bir robocopy /MOVEkomutu çalıştırmaya çalışıyorum ancak /XDbayrakla belirtilen birkaç alt dizini hariç tutuyorum .

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

Ne yazık ki /XDseçeneği yok sayar ve her şeyi taşır. Her şeyde mutlak bir yol kullanırsam, iyi çalışıyor, ancak bunun esnek olması gerekiyor. Göreceli yollarla çalışmasını sağlamanın bir yolu var mı?


2
%CD%Ortam değişkenini kullanarak, göreceli yolları tahmin edebileceğinizden daha az çabayla mutlak yollara dönüştürebileceğiniz belirtilmelidir . Örnek: robocopy ".\CurrentDir" ".\NewDir" /XD "%CD%\CurrentDir\SubDir1" "%CD%\CurrentDir\SubDir2" /E /MOVE
gbr

gbr cevabı doğru cevabı olmalıdır. (göreceli yolda ".." gerekmez)
Sake

Yanıtlar:


13

Belirtilen /XDklasörler, kaynak klasörde bulunan klasörlere (hariç tutulacak) atıfta bulunur; bu nedenle, yalnızca bir üst ilişki belirtmeden dışlamak istediğiniz klasör adlarını belirtirsiniz.

yani:

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

6
Beklenmedik bir şekilde, bu seviye 2 ve üzerindeki alt dizinler için çalışmıyor yani / XD "SubDir1 / SubDir11".
truthseeker

@ truthseeker - haklısın. 1. düzey klasörler için çalışır, ancak daha düşük bir şey değil. Bunun için, mutlak kaynak yolunu kullanmanız gerekir (örn. "/ Xd% ~ dp0CurrentDir \ Folder1 \ Subfolder1"), o zaman "Subfolder1" 'ı görmezden gelir, ancak "Folder1" vb. İle eşitlenir. Göreceli yolu kullanamazsınız ve Hedef yolu kullanamazsınız.
Roket tuşları,

0

Aşağıdakiler yardımcı olabilir - doğrudan göreceli yol sorununu ele alır - ancak çoğu hariç tutma dizinine ve alt dizinlere izin verir.

Yalnızca üst düzey klasörleri hariç tutuyorsanız - yalnızca klasör adını kullanın - örnek APC. Ancak, bir alt klasör yapıyorsanız - yolun tamamına ihtiyacınız vardır. Yol, kaynak yolla + alt klasöre giden yolla tamamen eşleşmelidir. Bunu birçok farklı yolla test ettim ve çalışmasını sağlayabilmemin tek yolu bu. Bu toplu iş / cmd dosya formatı yoldaki veya dosya adlarındaki boşluklara da izin verir.

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.