Как удалить пустые папки из заданного каталога в Windows с помощью скрипта

Как удалить пустые папки из заданного каталога в Windows с помощью скрипта

я используюр.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"

И, пожалуйста, обратитесь к ответу Денниса (принятому) по использованию скрипта в командной строке.

Связанный контент