Ich habe eine Batch-Datei, die mir eine Verzeichnisliste aller Dateien in aktuellen und Unterordnern gibt. Ich möchte dies ändern, um alle Dateien aufzulisten, die sich in Unterordnern befinden, aber NICHT im aktuellen Ordner. Derzeit verwende ich diesen Befehl, der erfolgreich zum Auflisten aller Dateien im aktuellen Ordner UND in den Unterordnern verwendet wird.
cd "c:\temp"
dir /s/b *.doc>c:\temp\mylist.txt
Dies führt zu folgenden Ergebnissen:
c:\temp\test8.doc
c:\temp\test9 (2).doc
c:\temp\test9.doc
c:\temp\012015\blah_012340.doc
c:\temp\032016\blah_124756.doc
c:\temp\042016\blah_125230.doc
c:\temp\052016\blah_052647.doc
Ich möchte, dass meine Ergebnisse nicht zeigen, was sich direkt in c: \ temp befindet, daher wären meine gewünschten Ergebnisse:
c:\temp\012015\blah_012340.doc
c:\temp\032016\blah_124756.doc
c:\temp\042016\blah_125230.doc
c:\temp\052016\blah_052647.doc
tree /f
für eine bessere visuelle Qualität?-include
und-exclude
wechselndir
.Antworten:
das sollte funktionieren
Hier ist die Aufteilung für diesen einen Liner.
for /f
wird verwendet, um eine Liste von Elementen zu durchlaufen."delims="
Setzt die Begrenzer auf keine, sodass jede Zeile als einzelne Phrase behandelt wird. Standardmäßig werden Leerzeichen als Trennzeichen behandelt.%5
ist die Variable.in ('dir /a:d /b')
Dies ruft die Liste der Verzeichnisse des Zielordners ab.do dir /b /s "%5"
Hier definieren Sie Ihre Aktion,do
gefolgt vom Befehl und dann der Variablen%5
als Argument.Bitte beachten Sie, dass Sie, wenn Sie dies von einer Batchdatei ausführen, verwenden müssen
%%5
for /f "delims=" %%5 in ('dir /a:d /b') do dir /b /s "%%5"
Hoffe das hilft.
Danke
quelle
%5
etwas war, das ich ändern soll, also habe ich es so gelassen, wie es ist. Ich habe den von Ihnen aufgelisteten Code zu meinem Stapel hinzugefügt. Die ausgegebenen Ergebnisse schlossen die Dateien aus, die sich in dem von mir durchsuchten Stammverzeichnis befanden. Es wurde jedoch nur ein Unterverzeichnis aufgelistet, und in diesem Test gab es 3 Unterverzeichnisse. Im Moment lautet der relevante Teil meines Skripts wie folgt: cd "c: \ temp" für / f "delims =" %% 5 in ('dir / a: d / b') do dir / b / s "%% 5">% list%>>
. in Ihrem Fallfor /f "delims=" %%5 in ('dir /a:d /b') do dir /b /s "%%5">>%list%