So löschen Sie leere Ordner aus einem bestimmten Verzeichnis in Windows mit einem Skript

So löschen Sie leere Ordner aus einem bestimmten Verzeichnis in Windows mit einem Skript

Ich benutzer.jsals Build-Tool, aber bis heute kann ich mit diesem Tool keine leeren Ordner im Build-Verzeichnis löschen. Ich habe diese beiden Skripte gefunden

for /f "usebackq" %%d in ("dir /ad/b/s | sort /R") do rd "%%d"

for /f "delims=" %%i in ('dir /s /b /ad ^| sort /r') do rd "%%i">NUL

ich schaue mich im Netz um, aber ich bekomme immer

%%i was unexpected at this time.

oder

%%d was unexpected at this time.

Und ich wüsste nicht, wie ich dem Skript mitteilen soll, wo mein Verzeichnis ist.

Mein Build-Skript ist

@echo off
where /q r.js || (
    echo requirejs node package is not installed. You must install node, npm and then run npm install -g requirejs
    goto :eof
)
node r.js -o app.build.js
:end

Ich muss dem Skript sagen, dass es alle leeren Verzeichnisse entfernen soll, die sich darin befinden../../js

Antwort1

Aus einem Grund, den ich nie ganz verstanden habe, forwird innerhalb und außerhalb von Batchdateien eine unterschiedliche Syntax verwendet.

Dieser Befehl sollte in einer Batchdatei funktionieren

for /f "delims=" %%i in ('dir /s /b /ad ^| sort /r') do rd "%%i"

In der Eingabeaufforderung (keine Batchdatei) müssen Sie Folgendes ersetzen %%idurch %i:

for /f "delims=" %i in ('dir /s /b /ad ^| sort /r') do rd "%i"

The directory is not empty.Um die Fehlermeldungen zu unterdrücken, verwenden Sie außerdem rd "%i" 2>NUL.

Eine einfache rd "%i">NULUmleitung der Ausgabe (stdout), nicht die Fehlermeldungen (stderr).

Antwort2

Beachten Sie, dass das erste Skript, also das folgende,Funktioniert NICHT bei Verzeichnissen mit Leerzeichen.

for /f "usebackq" %%d in ("dir /ad/b/s | sort /R") do rd "%%d"

Die richtige Version sollte hier sein. Beachten Sie, dass die Verwendung der Standard-Leerzeichen und Tabulatoren als Trennzeichen deaktiviert sein MUSS.

for /f "usebackqdelims=" %%d in ("dir /ad/b/s | sort /R") do rd "%%d"

Und bitte beachten Sie die Antwort von Dennis (die akzeptierte) zur Verwendung des Skripts in der Eingabeaufforderung.

verwandte Informationen