ฉันจะเรียบโฟลเดอร์ใน Windows 7 โดยสมมติว่าชื่อไฟล์ทั้งหมดแตกต่างกันอย่างไร


19

ตัวอย่างเช่นบอกว่าฉันมีลำดับชั้นของโฟลเดอร์ต่อไปนี้:

Folder1
   File1
   Folder2
      File2
   Folder3
      File3
      Folder4
         File4

ฉันต้องการดำเนินการคำสั่งบางอย่างที่ให้ผลลัพธ์ใน:

Folder1
   File1
   File2
   File3
   File4

หรือสิ่งที่คล้ายกัน ฉันไม่คุ้นเคยกับ Windows ดังนั้นฉันขอขอบคุณรายละเอียดมากที่สุดเท่าที่จะทำได้ในคำตอบ


คุณกำลังมองหาโปรแกรมที่มีอยู่ให้ทำเพื่อคุณหรือส่วนหนึ่งของรหัส (ภาษาการเขียนโปรแกรมอะไร) ที่ทำเช่นนี้?
Matt Ball

@MattBall: ฉันกำลังมองหาวิธีที่ง่ายที่สุดในการทำสิ่งนี้ เป็นการดีที่นี่จะเปิดสถานีและป้อนคำสั่งบางอย่าง อีกครั้งฉันไม่มีประสบการณ์กับ Windows ดังนั้นโปรดแจ้งให้เราทราบหากมีวิธีที่ดีกว่า ขอบคุณ

คำตอบ:


32

วิธีที่ง่ายที่สุดคือการเข้าสู่โฟลเดอร์รูททั่วไปและทำการค้นหาไฟล์ทั้งหมด (เช่นค้นหา *) เมื่อพบไฟล์ทั้งหมดให้ทำเครื่องหมายไฟล์ทั้งหมดกด Ctrl + X แล้วไปที่โฟลเดอร์รูททั่วไปอีกครั้ง ตอนนี้กด Ctrl + V เพื่อวางไฟล์ทั้งหมดลงในโฟลเดอร์รูท เมื่อเสร็จแล้วให้ลบไดเรกทอรีย่อยทั้งหมด

ฉันไม่ทราบว่าสิ่งนี้สามารถทำได้เป็นงานแบทช์


1
ฉันชอบความเรียบง่ายของสิ่งนี้ แต่ฉันลองกับไฟล์ 40k และทำให้กระบวนการ explorer ขัดข้อง
UpTheCreek

คำตอบของผู้บัญชาการทั้งหมดนั้นง่ายกว่าสำหรับฉัน
Ev0oD

13

ฉันใช้วิธี powershell นี้ในที่สุดเมื่อฉันต้องการที่จะแผ่โครงสร้างลำดับชั้นขนาดใหญ่ (ในกรณีของฉัน pngs):

Get-ChildItem C:\sourcefolder -Recurse -Filter "*.png" | Copy-Item -destination C:\destinationfolder\

สำหรับการย้ายรายการแบนอาจดีกว่าหรือไม่
geisterfurz007 หยุดความโกลาหลนี้

4

windows exe: http://en.sourceforge.jp/projects/sfnet_flatfolder/

หรือ AHK:

fileselectfolder,MyFold,::{20d04fe0-3aea-1069-a2d8-08002b30309d}
SetWorkingDir, %MyFold%
loop, *.*,0,1
{
  parentpath := RegExReplace(A_LoopFileDir,"\\","-")
  ;StringReplace, parentpath, A_LoopFileDir, \,-,All
  newname = %parentpath%-%A_LoopFileName%
  ;msgbox %newname%
  If a_loopfiledir <>
    filemove, %a_loopfilefullpath%,%newname%
}

loop, %myfold%\*.*,2,1
  fileremovedir, %a_loopfilefullpath%,1

exitapp

หรือใช้Directory Opus

หรือPowerShell

(ls -r -include *.jpg) | % { mv -literal $_ $_.Name.Insert(0, [String]::Format("{0} - ", $_.Directory.Name))}

หรือแบทช์ (ดังกล่าวข้างต้น)

หรือค้นหาด้วยตนเองตัดและวางตามที่กล่าวไว้ข้างต้น

มีหลายวิธีขึ้นอยู่กับทักษะและความโน้มเอียงของคุณคุณสามารถเลือกสิ่งเหล่านี้และปรับแต่งตามความต้องการของคุณ

คุณอาจต้องลบไดเรคตอรีที่ว่างเปล่าหลังจากการดำเนินการข้างต้น


1
คำสั่ง powershell นั้นสั้นและใช้งานได้ดี
Maxim Yefremov

3

หากคุณต้องการปรับ dir ด้วยตนเองเป็นบางครั้งTotal Commanderนั้นสมบูรณ์แบบ

ใน Total Commander: ไปที่ dir ของคุณคุณต้องการทำให้แบน ในเมนูคลิกคำสั่ง> สาขาดู และคุณเห็นว่าแบนทั้งหมดคุณสามารถย้าย / คัดลอกไปยังโฟลเดอร์อื่น

หากคุณต้องการคนจรจัดเล็กน้อยด้วยชื่อไฟล์: เลือกไฟล์ทั้งหมดในมุมมองแบบแบนในเมนูไปที่ไฟล์> เครื่องมือเปลี่ยนชื่อหลายรายการ ที่นี่คุณสามารถเพิ่มข้อมูลบางส่วนจากเส้นทางไปยังชื่อไฟล์จริงโดยใช้ "เปลี่ยนชื่อหน้ากาก" คุณเพียงแค่ต้องใช้แท็กปลั๊กอิน / ปุ่มที่นั่นคุณสมบัติการค้นหาและแทนที่และปุ่ม foolder เล็ก ๆ ซึ่งช่วยให้คุณสามารถแก้ไขชื่อไฟล์ใน โปรแกรมแก้ไขข้อความ อาจฟังดูซับซ้อน แต่จริงๆแล้วเป็นวิธีที่ง่ายที่สุด IMO :)


Windows Commander คืออะไร คุณหมายถึง Total Commander ใช่ไหม
UpTheCreek

แน่นอน :) เคยใช้มา 10 ปีแล้วชื่อคือ Windows Commander หลังจากนั้น ตัดออก
teejay

ขอบคุณ แค่ลองดู จะไม่ทำงานสำหรับไฟล์ขนาดเล็ก 40k แม้ว่า :( ใช้งาน CPU มากเป็นเวลา 10 นาทีจากนั้นเกิดข้อผิดพลาด 'ไม่สามารถสร้างไฟล์' ซ้ำได้
UpTheCreek

การใช้ CPU และความเชื่องช้าโดยนัยนั้นเป็นเรื่องที่โชคร้าย แต่เข้าใจง่าย :) ข้อผิดพลาดเป็นอย่างอื่น .. อาจเป็นการตั้งชื่อไม่ดี, บั๊กผู้บัญชาการทั้งหมดหรือเพียงแค่ TC ไม่สามารถจัดการไฟล์จำนวนมากได้ ฉันจะลองเปลี่ยนชื่อไฟล์ให้เล็กลงก่อนหรือใช้ TC
teejay

@ ทีเจย์ฉันต้องตกปลาเพื่อดูรายละเอียดข้อเสนอแนะของคุณ แต่ในที่สุดฉันก็สามารถทำมันได้ ฉันใช้ปลั๊กอิน expander2 เพื่อแยกส่วนของพา ธ และทำให้เป็นส่วนเติมหน้าของชื่อไฟล์ คุณอาจต้องการเพิ่มรายละเอียดสำหรับผู้ชายคนต่อไป Tx
killogre

3

ค่อนข้างง่ายด้วยตัวเลือกบรรทัดคำสั่งสำหรับผู้ที่ไม่ชอบเรื่องเทคนิค

  1. สร้างไฟล์ที่เรียกว่า "flatten.cmd"
  2. เปิดไฟล์นั้นใน Notepad
  3. ในไฟล์วางต่อไปนี้:

    FOR /R {SourcePath} %%G IN (*.mp3) DO move "%%G" {Destination}
    
  4. แทนที่ "{SourcePath}" ด้วยโฟลเดอร์ที่คุณต้องการให้แบน ในกรณีของคุณ "c: \ Folder1"

  5. แทนที่ "{Destination"} ด้วยโฟลเดอร์ที่คุณต้องการย้ายไฟล์ไปไว้ ในกรณีของคุณยัง "c: \ Folder1" รหัสควรมีลักษณะดังนี้:

    FOR /R c:\Folder1 %%G IN (*.mp3) DO move "%%G" c:\Folder1
    
  6. เปิดหน้าต่างบรรทัดคำสั่ง สามารถทำได้หลายวิธี แต่วิธีนี้รวดเร็ว:

    • คลิกปุ่มเริ่ม
    • คลิกโปรแกรมทั้งหมด
    • คลิกอุปกรณ์เสริม
    • คลิกพรอมต์คำสั่ง
  7. ในหน้าต่างบรรทัดคำสั่งพิมพ์:

    cd {folder where you put the flatten.cmd file}
    flatten
    

และนั่นจะทำเช่นนั้น (Windows 8+) ฉันเพิ่งทำเช่นนั้นเพื่อทำให้โฟลเดอร์เพลง 10,000 ไฟล์แบน ทำงานเหมือนจับใจ

คุณสามารถค้นหาตัวเลือกสำหรับสำหรับอรรถประโยชน์บรรทัดคำสั่งที่https://technet.microsoft.com/en-us/library/bb490909.aspx


1

ใช้ชุดสคริปต์ (ด้านบนของหัวของฉัน):

ค้นหาคำสั่ง FOR

บรรทัดแรกจะย้ายไฟล์ทั้งหมดจากไดเรกทอรีย่อยไปยังรูทที่สองจะลบโฟลเดอร์ย่อย

for /f %f in ('dir "c:\folder\*" /s/b/a-d') do if not %~ff"=="c:\folder" move "%f" "c:\folder"
for /f %f in ('dir "c:\folder\*" /s/b/ad') do if not "%~ff"=="c:\folder" rd /s/q "%f" 

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

หากคุณไม่ต้องการเขียนมันในสคริปต์ใช่ OTOH .....
Preet Sangha

สิ่งนี้สามารถทำให้เป็นแบบทั่วไปและเชื่อมโยงกับแอ็คชันเมนูบริบทได้หรือไม่? ฉันชอบที่จะสามารถคลิกขวาที่ไฟล์คลิก "Flatten File" จากนั้นให้ไฟล์ทั้งหมดที่อยู่ในนั้นเลื่อนขึ้นไปอยู่ในระดับโฟลเดอร์ การลบโฟลเดอร์หลังจากนั้นก็ดีเช่นกัน
MAW74656

ใช่มันสามารถใส่ลงในไฟล์แบตช์ที่มี% 1 เป็นชื่อโฟลเดอร์ได้ stackoverflow.com/questions/6162415/…
Preet Sangha

- บางทีคุณสามารถช่วยด้วยsuperuser.com/q/552768/59747
MAW74656

1

สวัสดีคุณสามารถใช้เครื่องมือ xxcopy (www.xxcopy.com) ซึ่งเป็นเครื่องมือ xcopy บน steriods (เรียงลำดับจาก) ด้วยเครื่องมือนี้คุณสามารถ "แบน" ไฟล์ในโฟลเดอร์ลงในโฟลเดอร์เดียว

c:> xxcopy / source-folder / flatten / SG

แค่อ่านลิงค์นี้: http://www.xxcopy.com/xxcopy16.htm

ไชโย

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