windows command line คำสั่ง dir: เพื่อแสดงเฉพาะชื่อไฟล์ในรูปแบบ 8.3?


11

ฉันรู้ว่า "dir / w" หรือ "dir / b" แสดงเฉพาะชื่อไฟล์ ในขณะที่ "dir / x" หรือ "dir / X" แสดงรูปแบบ 8.3 แต่ร่วมกันแสดงข้อมูลอื่น ๆ ทั้งหมดเช่นชื่อไฟล์รูปแบบยาววันที่และขนาด

เป็นไปได้หรือไม่ที่จะโทรdirซึ่งแสดงเฉพาะชื่อไฟล์ (ไม่แสดงวันที่หรือขนาด) และแสดงในรูปแบบ 8.3

คำตอบ:


10
for /R %A in (*.*) do @echo %~nsA %~nA

ไม่มีไดเรกทอรีย่อย:

for %A in (*.*) do @echo %~nsA %~nA

เพิ่มไฟล์ที่ซ่อนอยู่:

for /F "tokens=*" %A in ('dir /B/A:-/S *') do @echo %~nsA %~nA

ไม่มีไดเรกทอรีย่อย:

for /F "tokens=*" %A in ('dir /B/A:- *') do @echo %~nsA %~nA

คุณสามารถรวมเอาท์พุทที่พิสูจน์ได้ว่ามัน
barlop

ฉันจะทำให้ผลลัพธ์ของคำสั่งแรกนั้นเป็นไฟล์ข้อความได้อย่างไร ฉันได้รับข้อผิดพลาดต่อไปนี้: "การดำเนินการที่ร้องขอไม่สามารถทำได้ในไฟล์ที่เปิดส่วนที่ผู้ใช้แมปเปิดอยู่"
bdb484

3

ถ้าคุณต้องการให้ชื่อ 8.3 และไม่มีอะไรจะแสดงถ้าคุณใช้ "dir / -n" คุณจะได้รับชื่อ 8.3 ที่จุดเริ่มต้นของแต่ละบรรทัด หมายเหตุ: มันแยกส่วนขยายออกจากชื่อไฟล์ด้วยช่องว่างแทนที่จะเป็นจุด

C:\Users\User>dir /-n
 Volume in drive C has no label.
 Volume Serial Number is 5C60-1B61

 Directory of C:\Users\User

.             <DIR>             01/28/2015  11:26 PM
..            <DIR>             01/28/2015  11:26 PM
Contacts      <DIR>             12/27/2014  04:46 PM
Desktop       <DIR>             01/25/2015  05:06 PM
DOCUME~1      <DIR>             01/27/2015  10:20 PM
DOWNLO~1      <DIR>             01/27/2015  10:10 PM
FAVORI~1      <DIR>             12/27/2014  04:46 PM
GOOGLE~1      <DIR>             01/28/2015  02:08 AM
Links         <DIR>             01/25/2015  05:06 PM
Music         <DIR>             12/27/2014  04:46 PM
Pictures      <DIR>             12/27/2014  04:46 PM
SAVEDG~1      <DIR>             12/27/2014  04:46 PM
Searches      <DIR>             12/27/2014  04:46 PM
TESTIN~1 TXT                  8 01/28/2015  10:32 PM
TESTIN~2 BAT                175 01/28/2015  11:26 PM
TESTIN~1 BAT                164 01/28/2015  11:26 PM
UNIGIN~1      <DIR>             10/28/2014  07:01 PM
Videos        <DIR>             12/27/2014  04:46 PM
               3 File(s)            347 bytes
              16 Dir(s)  3,896,034,717,696 bytes free

แต่คุณสามารถใช้ "dir / -n" ภายในสำหรับลูปในไฟล์แบตช์จากนั้นแยกสตริงย่อยของอักขระ 12 ตัวแรกเพื่อกำจัดส่วนที่เหลือของแต่ละบรรทัด เช่น:

@echo off
setlocal EnableDelayedExpansion

for /f "skip=7 tokens=*" %%i in ('dir /-n ^| find /v "File(s)" ^| find /v "Dir(s)"') do (
   set x=%%i
   echo !x:~0,12!
)

"skip = 7" ข้าม 7 บรรทัดแรกซึ่งไม่ใช่ไฟล์หรือชื่อไดเรกทอรีและเอาต์พุตของ "dir / -n" ถูกไพพ์ผ่านคำสั่ง find สองคำสั่งเพื่อลบสองบรรทัดสุดท้ายที่สร้างโดย "dir / -n "(สัญลักษณ์ไปป์" | "ต้อง" หนี "โดย" ^ "เนื่องจากการคลายสตริงย่อยเกิดขึ้นใน for for loop ในไฟล์แบตช์จำเป็นต้องใช้" setlocal EnableDelayedExpansion "และ"! "ต้องใช้กับ ตัวแปร x แทนที่จะเป็น "%" สำหรับตัวอย่างข้างต้นคุณจะเห็นผลลัพธ์ต่อไปนี้จากการดำเนินการแบตช์ไฟล์:

C:\Users\User>testing456
Contacts
Desktop
DOCUME~1
DOWNLO~1
FAVORI~1
GOOGLE~1
Links
Music
Pictures
SAVEDG~1
Searches
TESTIN~1 TXT
TESTIN~2 BAT
TESTIN~1 BAT
UNIGIN~1
Videos

Nitpick: ช่องว่างหนึ่งช่องขึ้นไป ลองสร้างไฟล์ชื่อabc.txtเพื่อดูการทำงาน abc.docxจากนั้นเพื่อความสนุกสนานของมันสร้างไฟล์ชื่อ
CVN

0

หลังจากเล่นกับสิ่งนี้เป็นเวลาหนึ่งชั่วโมงฉันก็มาด้วยสิ่งต่อไปนี้:

จาก DOS พรอมต์:

for /F "tokens=*" %A in ('dir /B/A:-/S c:\Windows') do (@echo %~sA>> "%temp%\file_list_8dot3.txt")

จากไฟล์. BAT หรือ. CMD:

for /F "tokens=*" %%A in ('dir /B/A:-/S c:\Windows') do (@echo %%~sA>> "%temp%\file_list_8dot3.txt")

หมายเหตุ: สคริปต์นี้ยังคงมีปัญหากับชื่อไฟล์ที่ยาว แต่จะดำเนินการต่อและสร้างไฟล์ข้อความ 8dot3 ที่สามารถปั๊มเข้าไปในแบตช์ไฟล์อื่นได้

ต่อไปนี้คือการทดสอบทั้งหมดของฉัน. ไฟล์ค้างคาว:

@echo off
cls

set ll=%temp%\file_list_8dot3.txt

if exist "%ll%" del "%ll%"
for /F "tokens=*" %%A in ('dir /B/A:-/S %temp%') do (@echo %%~sA>> "%ll%")

start /wait notepad "%ll%"

if exist "%ll%" del "%ll%"

0

หากต้องการแสดงรายการไฟล์ในไดเรกทอรีย่อยให้ลองใช้ไฟล์นี้:

for /d /r %i in (*.*) do dir "%i" /B > %i/test.txt

 

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