windows command line dir command: untuk menampilkan hanya nama file, dalam format 8.3?

11

Saya tahu bahwa "dir / w" atau "dir / b" hanya menampilkan nama file. Sementara "dir / x" atau "dir / X" menunjukkan format 8.3, tetapi bersama-sama menunjukkan semua informasi lain seperti nama file format panjang, tanggal dan ukuran.

apakah mungkin untuk memanggil dir, yang hanya menampilkan nama file (tidak menunjukkan tanggal atau ukuran), dan menunjukkannya dalam format 8.3?

athos
sumber

Jawaban:

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

tanpa subdirektori:

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

tambahkan file tersembunyi:

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

tanpa subdirektori:

for /F "tokens=*" %A in ('dir /B/A:- *') do @echo %~nsA %~nA
STTR
sumber
dapatkah Anda memasukkan output yang membuktikannya
barlop
Bagaimana saya mendapatkannya untuk menendang hasil dari perintah pertama ke file teks? Saya mendapatkan kesalahan berikut: "Operasi yang diminta tidak dapat dilakukan pada file dengan bagian yang dipetakan pengguna terbuka."
bdb484
3

Jika Anda hanya ingin nama 8.3 dan tidak ada yang lain ditampilkan, jika Anda menggunakan "dir / -n" Anda akan mendapatkan nama 8.3 di awal setiap baris. Catatan: itu memisahkan ekstensi dari nama file dengan spasi daripada tanda titik.

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

Tapi Anda bisa menggunakan "dir / -n" di dalam for loop dalam file batch kemudian ekstrak substring dari 12 karakter pertama untuk menyingkirkan sisa setiap baris. Misalnya:

@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" melompati 7 baris pertama, yang bukan file atau nama direktori dan output dari "dir / -n" disalurkan melalui dua perintah find untuk menghapus dua baris terakhir yang dihasilkan oleh "dir / -n "(simbol pipa" | "harus" lolos "dengan" ^ ". Karena ekstraksi substring terjadi dalam loop for dalam file batch," setlocal EnableDelayedExpansion "diperlukan" dan "!" harus digunakan dengan variabel x daripada "%". Untuk contoh di atas, Anda akan melihat output berikut dari mengeksekusi file batch:

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
titik bulan
sumber
Nitpick: satu ruang atau lebih. Coba buat file bernama abc.txtuntuk melihat ini dalam tindakan. Kemudian, untuk bersenang-senang, buat file bernama abc.docx.
CVn
0

Setelah bermain dengan ini selama satu jam saya datang dengan yang berikut:

dari dos prompt:

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

dari file .BAT atau .CMD:

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

Catatan: skrip ini masih memiliki masalah dengan nama file yang panjang, tetapi akan melanjutkan dan membuat file teks 8dot3 yang kemudian dapat dipompa ke file batch lain.

Berikut ini adalah seluruh tes. File bat saya:

@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%"
Chicago Galloway
sumber
0

Untuk daftar file ke semua sub direktori coba yang ini:

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

 

ramu
sumber