การยกเว้นไดเรกทอรีตัวแทนด้วย robocopy - กรณีแปลก


16

ฉันต้องได้รับ robocopy เพื่อแยกไฟล์ใด ๆ ที่มีพา ธ ประกอบด้วยไดเรกทอรีที่มีชื่อเฉพาะ ตัวอย่างเช่น "bar":

c:\foo\bar\a.txt
c:\bar\c.txt
d:\baz\bar\flub\d.txt

ควรได้รับการยกเว้น แต่ไม่ควร

c:\foo\barf\b.txt

นี่คือสิ่งที่ฉันลอง - แต่ละอย่างถูกปฏิเสธโดย robocopy:

/XD \bar\
/XD *\bar\*
/XD *^\bar^\*

ความคิดใด ๆ

คำตอบ:


18

เปลี่ยนการจับคู่ / XD บนชื่อไดเรกทอรีไม่ใช่เส้นทางแบบเต็ม ดังนั้นคุณไม่ต้องกังวลกับการจับคู่แบ็คสแลช

ดังนั้นหากต้องการยกเว้นไดเรกทอรี (ที่ใดก็ได้ในเส้นทาง) เรียกว่า "บาร์" แถบ/ XDแบบง่ายจะทำงาน หากคุณต้องการยกเว้น "barf" คุณสามารถใช้ / XD bar *

บางครั้งคำตอบนั้นง่ายกว่าที่คุณคิด


4

ส่วนหนึ่งของความล้มเหลวคือการใช้ส่วนต่อท้าย \ ใน Robocopy เมื่ออ้างถึงไดเรกทอรี - ซึ่งไม่ใช่ - - ในขณะที่ Robocopy พยายามตีความว่ามันเป็นตัวละครหนี เกือบทุกคนทำผิดพลาดไปไม่ทางใดก็ทางหนึ่งกับ Robocopy เมื่อทราบแล้วตัวอย่างนี้จะใช้งานได้:

/XD "\Bar"

หากคุณต้องการจับคู่โครงสร้างโฟลเดอร์ที่เฉพาะเจาะจงมากขึ้น (เพื่อไม่ให้ตรงกับโฟลเดอร์ย่อยอื่น ๆ คุณสามารถเพิ่มรายละเอียดเพิ่มเติมเช่น:

/XD "\Foo\Bar"
/XD "C:\Foo\Bar"

2
การยกเว้นไวด์การ์ดไม่ทำงาน Robocopy จะโยนข้อผิดพลาดถ้าคุณลอง คุณทดสอบตัวอย่างแล้วหรือยัง
user1751825

ฉันทำและใช้มันยกเว้นความจริงที่ว่าฉันเพิ่มเครื่องหมายดอกจันลงในตัวอย่างของฉันซึ่งฉันคิดว่าฉันสับสนกับไวยากรณ์ด้วยสวิตช์ / XF ฉันแก้ไขคำตอบของฉันแล้ว ขอบคุณ
Micheal Espinola

1

หากคุณลองใช้ตัวกรองไดเรกทอรีอื่นอย่าลืมลบโฟลเดอร์ปลายทางระหว่างการเปลี่ยนแปลง!

gotcha สำหรับฉันก็คือฉันไม่ได้ตระหนักว่าสวิตช์ไดเรกทอรีไม่สนใจถูกนำไปใช้กับโฟลเดอร์ปลายทางเช่นกัน ฉันใช้ robocopy กับ/MIRและเปลี่ยนไดเรกทอรีต้นทางและไดเรกทอรีปลายทางของฉันก็อัพเดทตามที่คาดไว้ จากนั้นฉันสังเกตเห็นว่าฉันมีโฟลเดอร์เก็บถาวรที่ฉันไม่ต้องการดังนั้นฉันจึงเพิ่ม/XD archiveแต่โฟลเดอร์ปลายทางของฉันยังคงมีโฟลเดอร์เก็บถาวรในนั้น!

หลังจาก messing ด้วย wildcard และรวมถึง / ไม่รวม\s ในที่สุดฉันก็ลองลบโฟลเดอร์ปลายทางและเรียกใช้สคริปต์อีกครั้งคราวนี้มันไม่มีโฟลเดอร์เก็บถาวร! นี่คือคำสั่งที่ฉันใช้งานโดยมีการเปลี่ยนชื่อไดเรกทอรีเพื่อปกป้องผู้บริสุทธิ์:

robocopy \\SERVER\Some\Folder\Path .\Some\Relative\Path /Copy:DAT /Mir /R:0 /W:1 /XD archive*

0

ฉันขอโทษ แต่ตามเอกสารที่https://docs.microsoft.com/en-us/windows-server/administrator/windows-commands/robocopy :

/ xf <FileName> [... ] ไม่รวมไฟล์ที่ตรงกับชื่อหรือเส้นทางที่ระบุ โปรดทราบว่า FileName สามารถรวมอักขระตัวแทน (* และ?)
/ xd <Directory> [... ] ไม่รวมไดเรกทอรีที่ตรงกับชื่อและเส้นทางที่ระบุ

ดังนั้นนี่หมายถึงเฉพาะที่สามารถใช้สัญลักษณ์แทนในการตั้งค่าสถานะ / xf แต่ไม่ได้อยู่ในการตั้งค่า / xd

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.