
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, for
wird 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 %%i
durch %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">NUL
Umleitung 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.