
я используюр.jsкак инструмент сборки, но на сегодняшний день этот инструмент не дает мне возможности удалять пустые папки в каталоге сборки. Я нашел эти два скрипта
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
ищу в сети, но всегда получаю
%%i was unexpected at this time.
или
%%d was unexpected at this time.
И я не знаю, как сообщить скрипту, где находится мой каталог.
Мой скрипт сборки:
@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
Мне нужно указать скрипту удалить все пустые каталоги, которые находятся внутри../../js
решение1
По причине, которую я так и не понял, for
внутри и вне пакетных файлов используется разный синтаксис.
Эта команда должна работать внутри пакетного файла.
for /f "delims=" %%i in ('dir /s /b /ad ^| sort /r') do rd "%%i"
В командной строке (без пакетного файла) необходимо заменить %%i
на %i
:
for /f "delims=" %i in ('dir /s /b /ad ^| sort /r') do rd "%i"
Также, чтобы подавить The directory is not empty.
сообщения об ошибках, используйте rd "%i" 2>NUL
.
Простое rd "%i">NUL
перенаправление вывода (стандартный вывод), а не сообщения об ошибках (stderr).
решение2
Обратите внимание, что первый скрипт, т.е. тот, что ниже,НЕ работает с каталогами, содержащими пробелы.
for /f "usebackq" %%d in ("dir /ad/b/s | sort /R") do rd "%%d"
Правильная версия должна быть здесь. Обратите внимание, что использование пробелов и табуляции по умолчанию в качестве разделителей ДОЛЖНО быть отключено.
for /f "usebackqdelims=" %%d in ("dir /ad/b/s | sort /R") do rd "%%d"
И, пожалуйста, обратитесь к ответу Денниса (принятому) по использованию скрипта в командной строке.