So drucken Sie Dateien mit dem Namen des aktuellen Verzeichnisses anstelle des vollständigen Pfads

359
as jak

dir /b /s

Dies druckt:
D:\stuff\tmp>dir /b /s D:\stuff\tmp\A.java D:\stuff\tmp\AAA D:\stuff\tmp\B.java D:\stuff\tmp\C.java D:\stuff\tmp\Why.class D:\stuff\tmp\Why.java D:\stuff\tmp\XX.class D:\stuff\tmp\XX.java D:\stuff\tmp\XX.txt D:\stuff\tmp\AAA\aaa.kkk

Ich muss drucken:
D:\stuff\tmp>???? tmp\A.java tmp\AAA tmp\B.java tmp\C.java tmp\Why.class tmp\Why.java tmp\XX.class tmp\XX.java tmp\XX.txt tmp\AAA\aaa.kkk

Wie kann ich das machen?

2
Welches Problem versuchen Sie zu lösen? dsolimano vor 8 Jahren 0
Ich habe folgendes gefunden: [TechNet DIR-Befehl] (https://technet.microsoft.com/en-us/library/cc755121.aspx). Ich habe keine Zeit, es zu überprüfen, aber es sollte sagen, ob Sie es tun können oder nicht. Dooley_labs vor 8 Jahren 0

1 Antwort auf die Frage

0
GuitarPicker

Dies funktioniert für mich, wenn Sie Folgendes in eine CMD-Datei einfügen:

@echo off SETLOCAL EnableDelayedExpansion for /f "usebackq delims=" %%A in (`cmd /c dir /s /b`) DO ( set NAME=%%A set SHORT=!NAME:%cd%\=! echo.!SHORT! )  

Es nimmt die Ausgabe Ihres ursprünglichen dirBefehls und verwendet das Ersetzen des aktuellen Verzeichnisses durch Zeichenfolgenersetzung. Sehen Sie set /?für weitere Informationen zu diesem Thema . Wenn Sie es vorziehen, das Verzeichnis als Argument zu übergeben, anstatt das aktuelle Verzeichnis zu verwenden, versuchen Sie diese Änderung der Variablen:

@echo off SETLOCAL EnableDelayedExpansion for /f "usebackq delims=" %%A in (`cmd /c dir /s /b %1`) DO ( set NAME=%%A set SHORT=!NAME:%~1\=! echo.!SHORT! )  

Hüten Sie sich vor Dateinamen und Verzeichnissen, die im Dateinamen ein Ausrufezeichen enthalten, da sie bei dieser Methode häufig entfernt werden. Wenn Sie etwas Robusteres benötigen, das dies bewältigen kann, sollten Sie GNU sed oder grep installieren . Sie können auch mit dem Befehl GNU find nachforschen, ob Sie die Dateinamen, die im UNIX-Stil mit Schrägstrichen anstelle von umgekehrten Schrägstrichen zurückgegeben werden, und einen führenden ./Eintrag vor jedem Eintrag nicht stören.

Es gibt auch eine andere Antwort, die Ihnen Anregungen zum Umgang mit Ausrufezeichen in der CMD-Verarbeitung geben kann: https://stackoverflow.com/questions/32873578/how-to-read-a-string-with-froma-a-file-in- Windows-Batch-Skript / 32874195 # 32874195