windows lệnh dòng lệnh dir: để chỉ hiển thị tên tệp, ở định dạng 8.3?


11

Tôi biết rằng "dir / w" hoặc "dir / b" chỉ hiển thị tên tệp. Mặc dù "dir / x" hoặc "dir / X" hiển thị định dạng 8.3, nhưng cùng nhau hiển thị tất cả các thông tin khác như tên tệp ngày, định dạng và kích thước dài.

Có thể gọi dir, chỉ hiển thị tên tệp (không hiển thị ngày hoặc kích thước) và hiển thị ở định dạng 8.3?

Câu trả lời:


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

không có thư mục con:

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

thêm các tập tin ẩn:

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

không có thư mục con:

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

bạn có thể bao gồm đầu ra chứng minh điều đó không
barlop 8/2/2016

Làm thế nào tôi có thể đưa nó để đưa kết quả của lệnh đầu tiên đó vào một tệp văn bản? Tôi nhận được lỗi sau: "Thao tác được yêu cầu không thể được thực hiện trên một tệp có phần ánh xạ người dùng mở."
bdb484

3

Nếu bạn chỉ muốn tên 8.3 và không có gì khác được hiển thị, nếu bạn sử dụng "dir / -n", bạn sẽ nhận được tên 8.3 ở đầu mỗi dòng. Lưu ý: nó tách phần mở rộng khỏi tên tệp bằng khoảng trắng thay vì dấu chấm.

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

Nhưng bạn có thể sử dụng "dir / -n" trong vòng lặp for trong tệp bó sau đó trích xuất một chuỗi con gồm 12 ký tự đầu tiên để loại bỏ phần còn lại của mỗi dòng. Ví dụ:

@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" bỏ qua 7 dòng đầu tiên, không phải tệp cũng như tên thư mục và đầu ra của "dir / -n" được dẫn qua hai lệnh find để loại bỏ hai dòng cuối được tạo bởi "dir / -n "(ký hiệu đường ống" | "cần được" thoát "bằng" ^ ". Vì việc trích xuất chuỗi con xảy ra trong một vòng lặp for trong tệp bó," setlocal EnableDelayedExpansion "là cần thiết và"! "cần được sử dụng với biến x thay vì "%". Ví dụ trên, bạn sẽ thấy đầu ra sau đây khi thực hiện tệp bó:

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: một hoặc nhiều khoảng trắng. Hãy thử tạo một tệp có tên abc.txtđể thấy điều này trong hành động. Sau đó, để giải trí, hãy tạo một tệp có tên abc.docx.
một CVn

0

Sau khi chơi với nó một giờ, tôi nghĩ ra:

từ nhắc nhở:

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

từ tệp .BAT hoặc .CMD:

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

lưu ý: tập lệnh này vẫn có vấn đề với tên tệp dài, nhưng nó sẽ tiếp tục và tạo tệp văn bản 8dot3 mà sau đó có thể được bơm vào bất kỳ tệp bó nào khác.

Sau đây là toàn bộ bài kiểm tra .Bat của tôi:

@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

Để liệt kê các tập tin vào tất cả các thư mục phụ, hãy thử cái này:

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

 

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.