So löschen Sie leere Ordner aus einem bestimmten Verzeichnis in Windows mit einem Skript
Ich verwende r. js als Build-Tool, aber ab heute gibt mir dieses Tool nicht die Möglichkeit, leere Ordner im Build-Verzeichnis zu 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
Wenn ich mich im Netz umsehe, bekomme ich immer
%%i was unexpected at this time.
Oder
%%d was unexpected at this time.
Und ich würde nicht wissen, wie ich dem Skript sagen soll, wo sich mein Verzeichnis befindet.
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 das Skript anweisen, alle leeren Verzeichnisse zu entfernen, die sich darin befinden ../../js
2 answers
Aus einem Grund, den ich nie vollständig verstanden habe, verwendet for
eine andere Syntax innerhalb und außerhalb von Batchdateien.
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 %%i
durch %i
ersetzen:
for /f "delims=" %i in ('dir /s /b /ad ^| sort /r') do rd "%i"
Um die Fehlermeldungen The directory is not empty.
zu unterdrücken, verwenden Sie rd "%i" 2>NUL
.
Ein einfaches rd "%i">NUL
leitet die Ausgabe um (stdout), nicht die Fehlermeldungen (stderr).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-07-03 20:25:29
Beachten Sie, dass das erste Skript, dh das folgende, NICHT für Verzeichnisse mit Leerzeichen funktioniert.
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 Standardbereiche und Registerkarten als Trennzeichen deaktiviert sein muss.
for /f "usebackqdelims=" %%d in ("dir /ad/b/s | sort /R") do rd "%%d"
Und bitte beachten Sie Dennis ' Antwort (die akzeptierte) für die Verwendung des Skripts an der Eingabeaufforderung.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-07-06 03:23:58