
Estoy usandor.jscomo herramienta de compilación, pero a partir de hoy esas herramientas no me permiten eliminar carpetas vacías en el directorio de compilación. He encontrado estos dos scripts
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
Mirando alrededor de la red pero siempre obtengo
%%i was unexpected at this time.
o
%%d was unexpected at this time.
Y no sabría cómo decirle al script dónde está mi directorio.
Mi script de compilación es
@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
Necesito decirle al script que elimine todos los directorios vacíos que se encuentran dentro../../js
Respuesta1
Por razones que nunca entendí completamente, for
utiliza una sintaxis diferente dentro y fuera de los archivos por lotes.
Este comando debería funcionar dentro de un archivo por lotes
for /f "delims=" %%i in ('dir /s /b /ad ^| sort /r') do rd "%%i"
En el símbolo del sistema (sin archivo por lotes), debe sustituirlo %%i
por %i
:
for /f "delims=" %i in ('dir /s /b /ad ^| sort /r') do rd "%i"
Además, para suprimir los The directory is not empty.
mensajes de error, utilice rd "%i" 2>NUL
.
Un simple rd "%i">NUL
redirige la salida (salida estándar), no los mensajes de error (stderr).
Respuesta2
Tenga en cuenta que el primer script, es decir, el siguiente,NO funciona en directorios con espacios.
for /f "usebackq" %%d in ("dir /ad/b/s | sort /R") do rd "%%d"
La versión correcta debería estar aquí. Tenga en cuenta que el uso de espacios y tabulaciones predeterminados como delimitadores DEBE estar deshabilitado.
for /f "usebackqdelims=" %%d in ("dir /ad/b/s | sort /R") do rd "%%d"
Y consulte la respuesta de Dennis (la aceptada) para usar el script en el símbolo del sistema.