Ich werfe eine Batch-Datei zusammen, die eine Liste aller Verzeichnisse in einem bestimmten Pfad ausgibt.
Ich habe einige Ordner im W:/wamp/www/
Verzeichnis, die mit einem Unterstrich beginnen _
. zum beispiel _templates
.
Ich möchte, dass das Ergebnis alle Ordner ausschließt, die mit einem beginnen _
. Ich brauche diese Anstrengung nicht, um rekursiv zu sein.
Mein aktuelles Verzeichnis für w:/wamp/www/
sieht also so aus:
_system
_templates
_assets
Folder1
Folder2
Folder3
Gewünschte Echoausgabe ist:
Folder1
Folder2
Folder3
Ich kann eine Auflistung mit einer Anzahl von erhalten, die das Folgende verwendet, aber es wirft natürlich alle Ordner auf mich zurück. Ich würde mich über jede Unterstützung freuen. Ich brauche die Zahlen in dieser Liste nicht wirklich. Wenn es also einen eleganteren Ansatz gibt, wäre ich dankbar für die Einsicht
set acctDir=w:\wamp\www\
set app=setup.exe /cd
set log=w:\wamp\logs\projectlogs.txt
set c=0
For /f %%a in ('dir !acctDir! /B /A /D') do (
set /a c+=1
echo !c! %%a
set dir!c!=%%a
set projectname=%%a
)
quelle
attrib +h w:/wamp/www/_*
, und die Dateien werden dann aus den Verzeichnislisten ausgeschlossen.Antworten:
Sie können den Unterstrich irgendwo in Ihrer FOR-Schleife testen.
Diese Seite enthält einige gute Tipps zur String-Manipulation in CMD. http://www.dostips.com/DtTipsStringManipulation.php
quelle
Wenn Sie nur die Auflistung benötigen, könnte der vollständige Code sein
Verwenden Sie
findstr
diese Option, um die Liste zu filtern und nur die Zeilen abzurufen, die/v
am Anfang der Zeile keinen/b
Unterstrich ( ) enthaltenquelle
Wenn dieses System mindestens Windows 7 / Server 2008 R2 ist, können Sie den folgenden Befehl interaktiv in Powershell ausführen:
Es wird dringend empfohlen, alle Teile zusammen zu verschrotten und zu Powershell zu wechseln. Es ist der Nachfolger von cmd (der in Zukunft veraltet sein wird) und aufgrund seiner Objektorientierung wesentlich leistungsfähiger.
Der Befehl ruft alles im Verzeichnis www ab, das nicht mit '_' beginnt, und übergibt dann nur Verzeichnisse in der Pipeline an den Befehl select, der das Namensattribut der Verzeichnisse zurückgibt.
Lassen Sie mich wissen, ob Sie dies automatisieren müssen oder ob dies ausreicht.
quelle