Команда Windows 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

чи можете ви включити вихід, який доводить це
барлоп

Як я можу зробити так, щоб результати першої команди запустити у текстовий файл? Я отримую таку помилку: "Запрошена операція не може бути виконана у файлі з відкритим розділом, призначеним для користувача."
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" в циклі for for у пакетному файлі, а потім витягнути підрядку з перших 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" пропускається через дві команди пошуку для видалення останніх двох рядків, створених "dir / -n "(символ труби" | "повинен бути" уникнути "" " змінна 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

Нітпік: одне або кілька пробілів. Спробуйте створити файл з назвою, abc.txtщоб побачити це в дії. Потім для задоволення створіть файл з назвою abc.docx.
CVn

0

Погравши з цим протягом години, я придумав таке:

з дос-підказу:

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, який потім може бути завантажений у будь-який інший пакетний файл.

Далі йде весь мій тест .Bat файл:

@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

 

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.