Пакетный экстракт RARS с пробелами в именах
-
03-07-2019 - |
Вопрос
Я пытаюсь получить пакетное извлечение некоторых rar, которые находятся в некотором zip в некоторых каталогах. Короче говоря, это мой цикл по rar-файлам:
for %%r in (*.rar) do (
unrar x %%r
)
Проблема в том, что %% r получает неправильное значение. Если имя файла - «имя файла.rar» тогда %% r получает значение " файл " - останавливается на первом месте в имени файла.
Как заставить этот цикл работать с файловыми файлами с пробелами в именах?
Спасибо
Решение
Попробуйте это:
for /f "usebackq delims==" %i in (`dir /b *.rar`) do unrar x "%i"
Если вы используете его в пакетном файле, помните, что вам нужно удвоить знаки процента, чтобы избежать их.
Другие советы
%% r
будет содержать полное имя файла, включая пробелы. Это ваш вызов unrar
, который имеет проблему. Если имя файла содержит пробелы, вы должны заключить его в кавычки, иначе unrar
не сможет увидеть, что два (разделенных пробелами) параметра file
и < code> name.rar на самом деле одно имя файла с пробелом.
Таким образом, будет работать следующее:
for %%r in (*.rar) do unrar "%%r"
Кроме того, если вам интересно, в чем проблема, иногда очень полезно просто заменить вызов программы на echo:
for %%r in (*.rar) do @echo %%r
где вы увидите, что %% r включает пробелы в именах файлов и не разрывает их на части.