Вопрос

Я пытаюсь получить пакетное извлечение некоторых 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 включает пробелы в именах файлов и не разрывает их на части.

Проблема в том, что for используется пробел в качестве разделителя по умолчанию. Вы можете установить это, используя delims = xxx. здесь для поиска синтаксиса. Или вы можете использовать ForFiles .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top