Windows-Befehlszeilenverzeichnis Befehl: Nur den Dateinamen im Format 8.3 anzeigen.

11

Ich weiß, dass "dir / w" oder "dir / b" nur den Dateinamen anzeigt. Während "dir / x" oder "dir / X" das 8.3-Format anzeigt, werden zusammen alle anderen Informationen wie langformatige Dateinamen, Datumsangaben und Größe angezeigt.

Ist es möglich aufzurufen dir, dass nur die Dateinamen (ohne Datum oder Größe) und im 8.3-Format angezeigt werden?

Athos
quelle

Antworten:

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

ohne Unterverzeichnis:

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

versteckte Dateien hinzufügen:

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

ohne Unterverzeichnis:

for /F "tokens=*" %A in ('dir /B/A:- *') do @echo %~nsA %~nA
STTR
quelle
Können
Wie würde ich es schaffen, die Ergebnisse dieses ersten Befehls in eine Textdatei zu kicken? Ich erhalte die folgende Fehlermeldung: "Der angeforderte Vorgang kann nicht für eine Datei mit einem vom Benutzer zugeordneten Abschnitt ausgeführt werden."
Bdb484
3

Wenn Sie nur die 8.3-Namen und nichts anderes anzeigen möchten, erhalten Sie bei Verwendung von "dir / -n" den 8.3-Namen am Anfang jeder Zeile. Hinweis: Die Erweiterung wird vom Dateinamen durch ein Leerzeichen und nicht durch einen Punkt getrennt.

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

Sie können jedoch das "dir / -n" in einer for-Schleife in einer Batch-Datei verwenden und dann eine Teilzeichenfolge der ersten 12 Zeichen extrahieren , um den Rest jeder Zeile zu entfernen. Z.B:

@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!
)

Mit "skip = 7" werden die ersten 7 Zeilen übersprungen, bei denen es sich weder um Datei- noch um Verzeichnisnamen handelt. Die Ausgabe von "dir / -n" wird über zwei Suchbefehle geleitet, um die letzten beiden von "dir / -n" erzeugten Zeilen zu entfernen „(das Pipe - Symbol‚|‘Bedürfnisse sein“ entkommen "von einem‚^ setlocal EnableDelayedExpansion ‚benötigt wird , und‚‘Bedürfnisse mit der zu verwendenden‘ Da die Teilextraktion für Schleife in der Batch - Datei in einem auftritt.‘! Variable x statt "%". Im obigen Beispiel wird dann die folgende Ausgabe der Ausführung der Batchdatei angezeigt:

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
Mondpunkt
quelle
Nitpick: ein oder mehrere Leerzeichen. Versuchen Sie, eine Datei mit dem Namen abc.txtzu erstellen , um dies in Aktion zu sehen. Erstellen Sie dann zum Spaß eine Datei mit dem Namen abc.docx.
Ein CVn
0

Nachdem ich eine Stunde damit gespielt hatte, kam mir Folgendes ein:

von dos prompt:

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

aus .BAT- oder .CMD-Datei:

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

Hinweis: Dieses Skript hat immer noch Probleme mit langen Dateinamen, aber es wird fortgesetzt und eine 8dot3-Textdatei erstellt, die dann in jede andere Batchdatei gepumpt werden kann.

Das Folgende ist meine gesamte Test-Bat-Datei:

@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
quelle
0

Probieren Sie Folgendes aus, um Dateien in allen Unterverzeichnissen aufzulisten:

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

 

Ramu
quelle