Ich habe ein Projekt mit verschachtelten Ordnern.
Ich möchte in der Lage sein, rekursiv in Verzeichnissen nachzuschlagen, bis eine Datei „build.bat“ gefunden wird, und diese dann auszuführen.
Wie kann ich dies über die Befehlszeile tun? (also nicht über die Batchdatei selbst).
Hintergrund (optional): Versuch, die Compiler- und Makeprg-Einstellungen von Vim zu nutzen, um eine irgendwo im Projekt befindliche Build-Datei auszuführen und die Ausgabe auf Quicktips umzuleiten.
Antwort1
Angenommen, es handelt sich um einen bestimmten Projektstammordner d:\Remote
und um Ihr aktuelles Arbeitsverzeichnis. Dann (kopiert und eingefügt aus meinem Eingabeaufforderungsfenster):
d:\Remote>for /F "delims=" %G in ('dir /b /s build.bat') do @echo "%~G"
"d:\Remote\bat\test\build.bat"
Dann könnten Sie einfach entfernen @echo
...
Wenn Sie sich in einem anderen Arbeitsverzeichnis befinden:
d:\bat>for /F "delims=" %G in ('dir /b /s "d:\Remote\build.bat"') do @echo "%~G"
"d:\Remote\bat\test\build.bat"
NotizEs können mehrere Dateien gefunden werden. Wenn @echo
sie entfernt werden, werden alle gefundenen Dateien ausgeführt:
d:\Remote>for /F "delims=" %G in ('dir /b /s cdn.bat') do @echo "%~G"
"d:\Remote\bat\cdn.bat"
"d:\Remote\bat\test\cdn.bat"
Ressourcen(Pflichtlektüre):
- (Befehlsreferenz)Ein AZ-Index der Windows CMD-Befehlszeile
- (weitere Besonderheiten)Befehlszeilensyntax der Windows CMD-Shell
- (
%~G
usw. Sonderseite)Befehlszeilenargumente (Parameter)