ฉันจะย้ายไฟล์ทั้งหมดในทรีไปยังรูทของทรีได้อย่างไร


10

ฉันมีโฟลเดอร์ (ลองเรียกมันว่า A) ด้วยโฟลเดอร์ย่อย B, C, D, E ซึ่งมีโฟลเดอร์ย่อยอีก B1, B2, B3, ... C1, C2, C3 ...

ฉันจะใช้ cmd ย้ายไฟล์ทั้งหมดจากโฟลเดอร์ย่อยทั้งหมดไปยังโฟลเดอร์ "root" ได้อย่างไร?


ฉันสมมติว่าคุณต้องการไฟล์ทุกไฟล์ในรูทเดียวไม่ใช่ในโฟลเดอร์ย่อย? ดังนั้น A \ File1, A \ File2 ไม่ใช่ A \ Folder2 \ File1
ลุคชาวแคนาดา

@Luke - ใช่คุณเข้าใจแล้ว ทุกไฟล์ที่มีอยู่ในโฟลเดอร์และโฟลเดอร์ย่อยถูกย้ายไปที่รูท
โกง

คำตอบ:


12

โพสต์ดั้งเดิมของฉันถูกทอดทิ้งเพื่อรวมนามสกุลไฟล์ในคำสั่งย้าย %~niคืนค่า%~nxiชื่อไฟล์พื้นฐานเท่านั้นคุณต้องใช้เพื่อรับทั้งชื่อไฟล์และส่วนขยาย! ฉันหวังว่าคุณจะไม่ได้จัดการชื่อไฟล์ของคุณในบัญชีของฉัน! (

จากพรอมต์คำสั่ง:

cd /d C:\Path\To\A
for /r %i in (*) do @move "%i" "%~nxi"

หากคุณต้องการล้างโฟลเดอร์ว่างในภายหลัง:

for /d %i in (*) do @rd /s /q "%i"

ตอนนี้ถ้าคุณมีชื่อไฟล์ที่ขัดแย้งกันคุณอยู่คนเดียว คุณสามารถเพิ่ม/yพารามิเตอร์ให้กับmoveคำสั่ง (ก่อนหน้า"%i") เพื่อบังคับให้เขียนทับ หากคุณต้องการสิ่งที่แตกต่างคุณจะต้องมีโปรแกรมอื่นที่สามารถเปลี่ยนชื่อทุกอย่างให้คุณโดยอัตโนมัติ

นอกจากนี้ถ้าคุณต้องการที่จะใช้ในแฟ้มแบทช์เปลี่ยนทั้งหมดเพื่อ%%%


ไม่ทราบFOR /r- ดี!
Daniel Beck

ว้าวยอดเยี่ยมมาก ฉันคำนับคำสั่งของคุณ
Mokubai

2

สร้างโฟลเดอร์และคัดลอกทั้งหมดโฟลเดอร์อื่น ๆ ลงไปแล้วคลิกขวาที่โฟลเดอร์นั้นและเลือกค้นหา *.*ในกล่องค้นหาให้ใส่

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


การค้นหาไม่มีอยู่ในคำสั่งใน cmd ของฉัน
โกง

ริชาร์ดไม่ได้พูดเกี่ยวกับคำสั่ง ได้แก้ไขคำตอบของเขาเพื่อให้ชัดเจนยิ่งขึ้น
Isaac Rabinovitch

0

ติดตั้ง Cygwin (หรือสภาพแวดล้อม Unix อื่นสำหรับ Windows) และเรียกใช้สิ่งต่อไปนี้:

cd A
find . -type f -exec mv {} . \;

คุณอาจต้องใช้แทนทั้งนี้ขึ้นอยู่กับmvและfindตัวแปรของคุณ find . -type f -exec mv -t . {} \;
Daniel Beck

1
สำหรับพอร์ต Windows ดั้งเดิมของเครื่องมือ Unix มากมายฉันชอบunxutils.sourceforge.net
Dennis

@Dennis UnxUtils เป็นคนดีน่าเสียดายที่ค่อนข้างแก่แล้วในตอนนี้ หากคุณกำลังใช้งานอยู่ในตอนนี้คุณสามารถตรวจสอบโพสต์ของฉันได้หรือไม่ mkdir -p a/a1 a/a2 a/a3 b/b1 b/b2 b/b3 cและtouch a/a1/foo a/a1/bar a/a2/baz a/a3/qux b/b1/quux b/b2/quuux b/b3/quuuux c/cccสำหรับการเตรียมการ
Daniel Beck

-1 อาจเป็นจริง แต่ฉันถูกถามเกี่ยวกับวิธีการทำใน cmd
โกง

@Daniel ไม่ต้องสงสัยเลยว่าพวกเขาแก่แล้วฉันลากมันมาหลายปีแล้ว ฉันลอง find . -type f -exec mv {} . ;แล้วดูเหมือนว่าจะใช้ได้
Dennis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.