3

Я использую r.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

2 ответа2

4

По причине, которую я никогда полностью не понимал, 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 перенаправляет вывод (stdout), а не сообщения об ошибках (stderr).

0

Обратите внимание, что первый скрипт, т. Е. Приведенный ниже, НЕ работает с каталогами с пробелами.

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"

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .