
estou a usarr.jscomo uma ferramenta de compilação, mas a partir de hoje essas ferramentas não me permitem excluir pastas vazias no diretório de compilação. Eu encontrei esses dois 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
olhando ao redor da net, mas eu sempre consigo
%%i was unexpected at this time.
ou
%%d was unexpected at this time.
E eu não saberia como dizer ao script onde está meu diretório.
Meu script de construção é
@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
Preciso dizer ao script para remover todos os diretórios vazios localizados dentro../../js
Responder1
Por motivos que nunca entendi completamente, for
usa uma sintaxe diferente dentro e fora dos arquivos em lote.
Este comando deve funcionar dentro de um arquivo em lote
for /f "delims=" %%i in ('dir /s /b /ad ^| sort /r') do rd "%%i"
No prompt de comando (sem arquivo em lote), você deve substituir %%i
por %i
:
for /f "delims=" %i in ('dir /s /b /ad ^| sort /r') do rd "%i"
Além disso, para suprimir as The directory is not empty.
mensagens de erro, use rd "%i" 2>NUL
.
Um simples rd "%i">NUL
redireciona a saída (saída padrão), não as mensagens de erro (stderr).
Responder2
Observe que o primeiro script, ou seja, o abaixo,NÃO funciona em diretórios com caracteres de espaço.
for /f "usebackq" %%d in ("dir /ad/b/s | sort /R") do rd "%%d"
A versão correta deve estar aqui. Observe que o uso de espaços e tabulações padrão como delimitadores DEVE ser desabilitado.
for /f "usebackqdelims=" %%d in ("dir /ad/b/s | sort /R") do rd "%%d"
E consulte a resposta de Dennis (a aceita) para usar o script no prompt de comando.