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


13

ดังนั้นฉันกำลังศึกษาหลักสูตรออนไลน์ที่มีการบรรยายย่อยหลายร้อยรายการ ฉันจำเป็นต้องดาวน์โหลดซอร์สโค้ดสำหรับการบรรยายแต่ละครั้งในโฟลเดอร์ย่อยที่เกี่ยวข้อง ด้วยการบรรยายมากกว่า 120 ครั้งการสร้างโฟลเดอร์ย่อยทีละรายการเป็นกระบวนการที่เพียร

นี่คือโครงสร้างโฟลเดอร์ปัจจุบันของฉัน:

ป้อนคำอธิบายรูปภาพที่นี่

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


@WaySayeed ฉันไม่แน่ใจว่าคุณหมายถึงอะไร จะไม่ลบโฟลเดอร์ทั้งหมดใช่ไหม ฉันต้องการสร้างโฟลเดอร์จาก 9 ไปจนถึง 122 (หรือจำนวนครั้งของการบรรยายที่มีอยู่)
Manish Giri

เนื่องจากคุณพูดถึงแบทช์และไฟล์สคริปต์โดยเฉพาะฉันจะไม่โพสต์สิ่งนี้เป็นคำตอบ แต่ผู้ใช้ขั้นสูงที่แท้จริงรู้ว่าการหาเครื่องมือที่เหมาะสมสำหรับงานแทนที่จะเขียนด้วยตัวคุณเอง;) เพียงใช้เครื่องมือการเปลี่ยนชื่อและคุณสามารถคิดออกในเวลาน้อยกว่าหนึ่งนาทีรวมถึงการดาวน์โหลด ฉันใช้Rename MasterและBulk Rename Utility (มีโฆษณา) เป็นการส่วนตัวและทั้งคู่สามารถจัดการกับไฟล์และโฟลเดอร์อื่น ๆ ที่น่ารำคาญได้ (ฉันไม่ได้มีส่วนเกี่ยวข้องกับเครื่องมือใด)
Lilienthal

ใช้โปรแกรมเช่นgetrightสำหรับการดาวน์โหลด มันมีรุ่นฟรี แต่ละไฟล์ควรจะดาวน์โหลดไปยังบ้านที่เหมาะสม
JDługosz

คำตอบ:


29

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

ถ้าฉันจะสร้างโฟลเดอร์ย่อยในไดเรกทอรีเฉพาะเช่น C: \ Dropbox \ Development ฉันต้อง cd ไปที่ไดเรกทอรีนั้นก่อนหรือไม่ สมมติว่าฉันใช้ cmd shell หรือไม่

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

  • cd C:\Dropbox\Development ก่อนหรือ
  • เปลี่ยนคำสั่งmd Lec-%%imd C:\Dropbox\Development\Lec-%%i

บันทึก:

  • mkdirเป็นคำพ้องความหมายmdและสามารถใช้แทนได้

ด้านล่างฉันแสดงทั้งทางเลือกแรกจากcmdเชลล์ (บรรทัดคำสั่ง) และที่สองโดยใช้ไฟล์แบตช์

ในฐานะโบนัส (แม้ว่าจะไม่ได้ถามในคำถามเดิม) มีbashทางเลือกเชลล์เช่นกัน


จากcmdเปลือก:

cd C:\Dropbox\Development
for /l %i in (9,1,120) do md Lec-%i

หรือ

for /l %i in (9,1,120) do md C:\Dropbox\Development\Lec-%i

จากแบตช์ไฟล์:

@echo off
cd C:\Dropbox\Development
for /l %%i in (9,1,120) do md Lec-%%i

หรือ

@echo off
for /l %%i in (9,1,120) do md C:\Dropbox\Development\Lec-%%i

หมายเหตุ:

  • 9เป็นหมายเลขเริ่มต้น เปลี่ยนแปลงหากจำเป็น
  • 1เป็นขั้นตอน อย่าเปลี่ยนสิ่งนี้
  • 120หมายเลขสิ้นสุด เปลี่ยนหากจำเป็นเป็นจำนวนไดเรกทอรีสุดท้ายที่คุณต้องการ
  • ในการสร้างไฟล์ในไดเรกทอรีอื่นคุณสามารถทำได้

    • cd C:\Dropbox\Development\Lec-%%i ก่อนหรือ
    • เปลี่ยนคำสั่งmdmd C:\Dropbox\Development\Lec-%%i

มีวิธีทำสิ่งที่คล้ายกันสำหรับ Mac OSX จาก terminal Mac หรือไม่?

จากbashเปลือก:

for i in {9..120}; do mkdir Lec-$i; done; 

หรือ (สำหรับรุ่นพกพาเพิ่มเติม)

for i in `seq 9 120`; do mkdir Lec-$i; done;

อ่านเพิ่มเติม

  • ดัชนี AZ ของบรรทัดคำสั่ง Windows CMD - การอ้างอิงที่ยอดเยี่ยมสำหรับทุกสิ่งที่เกี่ยวข้องกับบรรทัด Windows cmd
  • สำหรับ - ดำเนินการคำสั่งแบบมีเงื่อนไขหลายครั้ง
  • md - สร้างไดเรกทอรี - สร้างโฟลเดอร์ใหม่

ถ้าฉันจะสร้างโฟลเดอร์ย่อยในไดเรกทอรีเฉพาะเช่นC:\Dropbox\Developmentฉันจะต้องไปcdยังไดเรกทอรีนั้นก่อนหรือไม่ สมมติว่าฉันใช้cmdเปลือก? และขอบคุณมาก!
Manish Giri

@ หายไปใช่คุณต้องcdไปที่โฟลเดอร์ก่อน
LPChip

ที่เพียงแค่การเปลี่ยนmd Lec-%%iไปmd C:\Dropbox\Development\Lec-%%i
DavidPostill

แทนที่จะใช้mdทำไมmkdirบน Windows วิธีนี้จะสอดคล้องกับ * ระวังและความแตกต่างน้อยกว่าหนึ่งสำหรับผู้ที่ต้องจดจำ
user541686

@ Mehrdad ฉันจะเพิ่มบันทึกในลักษณะพิเศษนั้น
DavidPostill

22

มีอีกวิธีที่ง่ายสำหรับจำนวนโฟลเดอร์ที่ จำกัด อาจเป็นประโยชน์ที่นี่หรือเพื่อคนอื่น

ใน Windows เราสามารถสร้างชื่อโฟลเดอร์ที่มีหมายเลขโดยการสร้างโฟลเดอร์ "lec (1)" และคัดลอกวางไว้กี่ครั้งที่เราต้องการถ้าเราวาง 10 ครั้งจะมี 11 โฟลเดอร์ที่มีชื่อ "lect (1)" ถึง "lec (11) 10) - คัดลอก "

เคล็ดลับเท่านั้นที่นี่คือโฟลเดอร์แรกจะต้องมีวงเล็บ (n) โดยที่ n คือหมายเลขที่เริ่มต้นการกำหนดหมายเลข

Windows ประกอบด้วย "- คัดลอก" ที่และชื่อโฟลเดอร์ "lec (1) - คัดลอก" :(

หากคุณไม่ชอบให้เลือกทั้งหมดและเปลี่ยนชื่อ lec (1) -> lec- (1) หรืออะไรก็ตามก่อน

ชื่อโฟลเดอร์ทั้งหมดจะถูกปรับและ "- คัดลอก" จะถูกลบ;)

  • Ctrl + C - คัดลอก
  • Ctrl + V - วาง
  • F2 - เปลี่ยนชื่อ
  • ป้อน - เพื่อเปลี่ยนชื่อให้เสร็จ
  • ESC- เพื่อยกเลิกการเปลี่ยนชื่อ
  • Ctrl + A หรือ Ctrl + UP เพื่อเลือกโฟลเดอร์

ป้อนคำอธิบายรูปภาพที่นี่


2
+1 สำหรับสอนสิ่งที่ฉันไม่รู้ :)
LPChip

อนิเมชั่น (".gif") ค่อนข้างจะเป็นความรู้สึกที่ดี แต่การทำซ้ำไปเรื่อย ๆ ซ้ำไปซ้ำมา ... ซ้ำไปซ้ำมาน่ารำคาญมาก
Kevin Fegan

4
@KevinFegan ฉันไม่เห็นด้วย GIF แบบวนลูบทำให้ผู้ใช้ (คุณ) ได้เห็นภาพเคลื่อนไหวจริงโดยไม่ต้องโหลดหน้าซ้ำและเลื่อนลงอย่างรวดเร็วเพื่อลองดู เบราว์เซอร์ส่วนใหญ่ไม่มีปุ่มควบคุม GIF
phyrfox

คำตอบที่ยอดเยี่ยมและหยุดดูหลังจากที่คุณได้รับคะแนน!
mothmonsterman

สิ่งนี้จะไม่ทำงานหากคุณไม่ต้องการวงเล็บในชื่อโฟลเดอร์ของคุณ ตัวอย่างเช่นฉันสามารถสร้างรายการโฟลเดอร์: x (0), x (1), x (2), ... x (N) แต่ฉันไม่สามารถสร้างรายการ: x0, x1, x2, ... xN
Gil Epshtain

2

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

C:\temp\animals>dir
 Volume in drive C is Windows
 Volume Serial Number is 82CB-BB0F

 Directory of C:\temp\animals

11/16/2015  03:55 PM    <DIR>          .
11/16/2015  03:55 PM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  1,636,846,243,840 bytes free

C:\temp\animals>mkdir cats dogs penguins

C:\temp\animals>dir
 Volume in drive C is Windows
 Volume Serial Number is 82CB-BB0F

 Directory of C:\temp\animals

11/16/2015  03:55 PM    <DIR>          .
11/16/2015  03:55 PM    <DIR>          ..
11/16/2015  03:55 PM    <DIR>          cats
11/16/2015  03:55 PM    <DIR>          dogs
11/16/2015  03:55 PM    <DIR>          penguins
               0 File(s)              0 bytes
               5 Dir(s)  1,636,846,178,304 bytes free

3
มันดีที่คุณจะชี้ให้เห็นสิ่งนี้ แต่มันไม่ได้ตอบคำถาม ...
DavidPostill

1
@DavidPostill ฉันเห็นด้วยซึ่งเป็นเหตุผลที่ฉันพูดในแบบที่ฉันทำ แต่มันจะดีกว่าการสร้างโฟลเดอร์ 1 ต่อ 1 บางทีฉันควรลบคำตอบและแสดงความคิดเห็นหรือไม่
TTT

1

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

C:\Dropbox\Development> dir /b
Lec-10
Lec-100
Lec-101
Lec-102
Lec-103
Lec-104
Lec-105
Lec-106
Lec-107
Lec-108
Lec-109
Lec-11
Lec-110
Lec-111
Lec-112
Lec-113
Lec-114
Lec-115
Lec-116
Lec-117
Lec-118
Lec-119
Lec-12
Lec-120
Lec-13
Lec-14
Lec-15
Lec-16
Lec-17
Lec-18
Lec-19
Lec-20
Lec-21
...
Lec-89
Lec-9
Lec-90
Lec-91
...

ปัญหาคือส่วนจำนวนของ foldernames คือความกว้างของตัวแปรซึ่งมีผลต่อวิธีการเรียงลำดับโฟลเดอร์

หากคุณมีความสำคัญต่อโฟลเดอร์ที่จัดเรียงอย่างถูกต้องให้ใช้ไฟล์แบตช์ด้านล่างเพื่อสร้างโฟลเดอร์ที่มีส่วนหมายเลขของโฟลเดอรส์ที่ใส่ด้วย "0's" (ศูนย์) เพื่อให้หมายเลขทั้งหมดมีความยาวเท่ากันดังนี้

C:\Dropbox\Development> dir /b
Lec-009
Lec-010
Lec-011
Lec-012
Lec-013
Lec-014
Lec-015
Lec-016
Lec-017
Lec-018
Lec-019
Lec-020
Lec-021
...

นี่คือไฟล์แบทช์:

@echo off

for /L %%f in (9,1,120) do call :work 000%%f
goto :EOF


:work

set "dx=%~1"
set "dx=%dx:~-3%"

md "C:\Dropbox\Development\Lec-%dx%" >nul 2>&1

set "dx="
goto :EOF

1
วิธีการเรียงลำดับนั้นขึ้นอยู่กับเครื่องมือ Explorer (และส่วนใหญ่ผู้จัดการไฟล์อื่น ๆ ) จะจัดเรียงพวกเขาสังหรณ์ใจกับมาหลังจากLec-10 Lec-9
afrazier

Explorer ใช้การเรียงลำดับแบบธรรมชาติดังนั้น2จะถูกใส่ก่อนหน้า10อย่างที่คาดไว้ (ถ้าคุณดูที่ภาพหน้าจอของ OP 9 จะถูกจัดเรียงก่อน 10) เพียง แต่dirทนทุกข์ทรมานจากว่าปัญหาและความต้องการ0paddings แต่ OP ไม่ได้รู้มากเกี่ยวกับบรรทัดคำสั่งดังนั้นผมจึงไม่คิดว่ามันจะเป็นปัญหา
phuclv

@phuclv - ใช่อย่างที่คุณพูดว่า "OP ไม่รู้มากเกี่ยวกับบรรทัดคำสั่ง ... " นั่นเป็นเหตุผลที่ฉันเขียนคำตอบนี้ เพื่อให้ OP รู้ว่าต้องคาดหวังอะไรและจะให้คำตอบ (ตอบ) ฉันนึกภาพออกโดยใช้คำตอบที่ยอดเยี่ยมของ DavidPostill แล้วทำให้สับสนเพื่อดูdirรายการโฟลเดอร์ตามลำดับ หน้าต่างในขณะที่คุณและafrazierกล่าวถึง Windows Explorer จะเรียงลำดับรายการ / โฟลเดอร์อย่างถูกต้อง แต่ OP ได้รับการมองหาbatchวิธีการแก้ปัญหาซึ่งหมายความว่าพวกเขาจะเป็น (ส่วนใหญ่มีแนวโน้ม) command promptทำงานจาก
Kevin Fegan

0

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

for /f "delims=" %%a in ('dir /b') do (
if not "%%~fa"=="%~f0" (
md "%%~na" 2>nul
if exist "%%a" move "%%~na.*" "%%~na"
)
)

ฉันใช้คำเตือนด้านล่างเพื่อหลีกเลี่ยงการใช้โดยไม่ตั้งใจ

@echo off
echo.
set sure=
set /p sure=you want to put each file in this folder into their own folders? 
if /i "%sure%"=="" exit
if /i "%sure:~0,1%"=="n" exit
if /i not "%sure:~0,1%"=="y" (exit) else (echo.&echo are you sure? Close window to cancel or..)
echo.&pause 
for /f "delims=" %%a in ('dir /b') do (
if not "%%~fa"=="%~f0" (
md "%%~na" 2>nul
if exist "%%a" move "%%~na.*" "%%~na"
)
)

-1

ก่อนอื่นฉันไม่ได้อ่านปัญหาทั้งหมดของคุณ ... แต่เท่าที่ฉันสามารถหาได้ ... คุณต้องการเปลี่ยนชื่อโฟลเดอร์ตามรายการ ... ดีมีสองวิธี

วิธีที่ 1 - ถ้าคุณไม่มีรายชื่อโฟลเดอร์ ... มีวิธีแก้ปัญหา ... คุณต้องไปที่ macOS ด้วยทรีโฟลเดอร์นี้ ... และคัดลอกทรีโฟลเดอร์ทั้งหมด ... สิ่งที่ macOS จะทำคือคัดลอกเนื้อหา เช่นเดียวกับรายการของโฟลเดอร์ทั้งหมดของคุณในแง่ของรายการเช่นกัน ... ตอนนี้วางใน TextEdit หรือซอฟต์แวร์ใด ๆ ที่คล้ายกับ Notepad

- ตอนนี้ฉันกำลังสมมติว่าคุณมีรายชื่อโฟลเดอร์อยู่กับคุณ ... คุณแค่ต้องการซอฟต์แวร์บุคคลที่สามเพื่อทำงาน (ตอนนี้ทุกขั้นตอนสำหรับ Windows) https://www.rename-expert.com - ในแง่ ในการใช้ซอฟต์แวร์นี้คุณต้องสร้างโฟลเดอร์ใหม่, โฟลเดอร์ใหม่ -2, โฟลเดอร์ใหม่ -4 เท่าที่คุณต้องการ

- ตอนนี้ใน Rename Expert มีตัวเลือกในการเปลี่ยนชื่อโฟลเดอร์จากพื้นฐานของรายการ

- คุณเสร็จแล้ว

วิธีที่ 2 - ถ้าคุณต้องการสร้างสำเนามิเรอร์ของทรีโฟลเดอร์ทั้งหมดโดยไม่มีไฟล์อยู่

-Beyond Compare เป็นซอฟต์แวร์ที่คุณต้องการ https://www.scootersoftware.com/support.php?zz=kb_copyfolderstructure


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