![Wie kann ich mit „IF NOT EXIST“ rekursiv nach Ordnern suchen?](https://rvso.com/image/1555385/Wie%20kann%20ich%20mit%20%E2%80%9EIF%20NOT%20EXIST%E2%80%9C%20rekursiv%20nach%20Ordnern%20suchen%3F.png)
Ich möchte ein Batch-Skript erstellen, das rekursiv nach angegebenen Verzeichnissen sucht und IF NOT EXIST
einen Fehler ausgibt, wenn die Ordner nirgends zu finden sind. Hier ist, was ich bisher habe:
IF NOT EXIST %FOLDER1% goto :ERROR
IF NOT EXIST %FOLDER2% goto :ERROR
IF NOT EXIST %FOLDER3% goto :ERROR
:ERROR
echo There aren't any folders to clean...
PAUSE goto :END
goto END
Ich werde %FOLDER1%
, %FOLDER2%
, %FOLDER3%
durch unterschiedliche Namen ersetzen, je nach den Umständen und den zu bereinigenden Ordnern. Es scheint, dass mein aktuelles Skript nur nach Dateien sucht. Wie soll ich Verzeichnisse mit dieser Syntax definieren?
Antwort1
Ich habe eine einfache Möglichkeit für Sie beigefügt, wie Sie dies tun und die Ordnerliste im selben Skript verwalten können, sodass Sie bei Bedarf Änderungen vornehmen können, indem Sie das Skript öffnen und entsprechend ändern.
Im Wesentlichen wird diesAnrufdie :List
Subroutine, die die Variable und ihre Werte enthält, Arrary
getrennt durch Kommas und eingeschlossen in doppelte Anführungszeichen für jeden Ordnerpfad, den Sie überprüfen möchten. Sie gibt dann GOTO :EOF
die Kontrolle an das Original zurück CALL
und dann mit einem einfachenfürSchleife können Sie die %Array%
Variablenwerte einzeln entsprechend der IF NOT EXIST
Logik iterieren.
@ECHO ON
CALL :List
FOR %%A IN (%Array%) DO (
IF NOT EXIST "%%~A" ECHO %%~A Does Not Exist
)
EXIT
:List
::: Maintain your folder paths in the 'SET Array=' as values enclosed by double quotes and separated by commas
SET Array="C:\Folder\Path1", "X:\\Folder\\Math2", "\\server\Bath3", "c:/Folder/Wrath4"
GOTO :EOF