ฉันมีโฟลเดอร์ (ลองเรียกมันว่า A) ด้วยโฟลเดอร์ย่อย B, C, D, E ซึ่งมีโฟลเดอร์ย่อยอีก B1, B2, B3, ... C1, C2, C3 ...
ฉันจะใช้ cmd ย้ายไฟล์ทั้งหมดจากโฟลเดอร์ย่อยทั้งหมดไปยังโฟลเดอร์ "root" ได้อย่างไร?
ฉันมีโฟลเดอร์ (ลองเรียกมันว่า A) ด้วยโฟลเดอร์ย่อย B, C, D, E ซึ่งมีโฟลเดอร์ย่อยอีก B1, B2, B3, ... C1, C2, C3 ...
ฉันจะใช้ cmd ย้ายไฟล์ทั้งหมดจากโฟลเดอร์ย่อยทั้งหมดไปยังโฟลเดอร์ "root" ได้อย่างไร?
คำตอบ:
โพสต์ดั้งเดิมของฉันถูกทอดทิ้งเพื่อรวมนามสกุลไฟล์ในคำสั่งย้าย
%~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
- ดี!
สร้างโฟลเดอร์และคัดลอกทั้งหมดโฟลเดอร์อื่น ๆ ลงไปแล้วคลิกขวาที่โฟลเดอร์นั้นและเลือกค้นหา *.*
ในกล่องค้นหาให้ใส่
นี่จะแสดงรายการไฟล์และโฟลเดอร์ทั้งหมด เลือกไฟล์ทั้งหมดที่คุณต้องการในไดเรกทอรีรากของคุณและตัดมัน นำทางไปยังไดเรกทอรีรากของคุณและวางไฟล์ทั้งหมดที่นั่น
ติดตั้ง Cygwin (หรือสภาพแวดล้อม Unix อื่นสำหรับ Windows) และเรียกใช้สิ่งต่อไปนี้:
cd A
find . -type f -exec mv {} . \;
mv
และfind
ตัวแปรของคุณ find . -type f -exec mv -t . {} \;
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
สำหรับการเตรียมการ
find . -type f -exec mv {} . ;
แล้วดูเหมือนว่าจะใช้ได้