wiersz polecenia systemu Windows polecenie dir: aby wyświetlić tylko nazwę pliku, w formacie 8.3?


11

Wiem, że „dir / w” lub „dir / b” pokazuje tylko nazwę pliku. Podczas gdy „dir / x” lub „dir / X” pokazuje format 8.3, ale razem pokazuje wszystkie inne informacje, takie jak nazwy plików o długim formacie, daty i rozmiar.

czy można zadzwonić dir, która pokazuje tylko nazwy plików (nie pokazuje dat ani rozmiarów) i pokazuje to w formacie 8.3?

Odpowiedzi:


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

bez podkatalogu:

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

dodaj ukryte pliki:

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

bez podkatalogu:

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

czy możesz dołączyć dane wyjściowe, które to potwierdzają
barlop

Jak sprawić, by kopał wyniki pierwszego polecenia do pliku tekstowego? Pojawia się następujący błąd: „Żądanej operacji nie można wykonać na pliku z otwartą sekcją mapowaną przez użytkownika”.
bdb484

3

Jeśli chcesz, aby nazwy 8.3 były wyświetlane i nic więcej nie będzie wyświetlane, jeśli użyjesz „dir / -n”, dostaniesz nazwę 8.3 na początku każdej linii. Uwaga: oddziela rozszerzenie od nazwy pliku spacją zamiast kropki.

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

Ale możesz użyć „dir / -n” w pętli for w pliku wsadowym, a następnie wyodrębnić podłańcuch pierwszych 12 znaków, aby pozbyć się reszty każdej linii. Na przykład:

@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” pomija pierwsze 7 wierszy, które nie są nazwami plików ani katalogów, a dane wyjściowe „dir / -n” są przesyłane przez dwie komendy find w celu usunięcia dwóch ostatnich wierszy utworzonych przez „dir / -n” „(symbol potoku„ | ”musi być„ poprzedzony znakiem „^”. Ponieważ ekstrakcja podciągów odbywa się w pętli for w pliku wsadowym, potrzebne jest „setlocal EnableDelayedExpansion” i „!” należy używać z zmienna x zamiast „%”. W powyższym przykładzie zobaczysz następujące dane wyjściowe z wykonania pliku wsadowego:

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: jedno lub więcej spacji. Spróbuj utworzyć plik o nazwie, abc.txtaby zobaczyć to w akcji. Następnie, dla zabawy, utwórz plik o nazwie abc.docx.
CVn

0

Po godzinie zabawy z tym wymyśliłem:

z wiersza polecenia:

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

z pliku .BAT lub .CMD:

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

Uwaga: ten skrypt nadal ma problem z długimi nazwami plików, ale będzie kontynuował i tworzy plik tekstowy 8dot3, który można następnie pompować do dowolnego innego pliku wsadowego.

Oto mój cały testowy plik .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

Aby wyświetlić listę plików we wszystkich podkatalogach, wypróbuj ten:

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

 

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.