Пакетный экстракт RARS с пробелами в именах - PullRequest
2 голосов
/ 05 мая 2009

Я пытаюсь пакетным способом извлечь некоторые rar, которые находятся в каком-то zip в некоторых каталогах. Короче говоря, это мой цикл по rar-файлам:

for %%r in (*.rar) do (

unrar x %%r
)

Проблема в том, что %% r получает неправильное значение. Если имя файла «file name.rar», то %% r получает значение «file» - оно останавливается на первом пробеле в имени файла.

Как заставить этот цикл работать с файловыми файлами с пробелами в именах?

Спасибо

Ответы [ 3 ]

1 голос
/ 05 мая 2009

Попробуйте это:

for /f "usebackq delims==" %i in (`dir /b *.rar`) do unrar x "%i"

Если вы используете его в пакетном файле, помните, что вам нужно удвоить знаки процента, чтобы избежать их.

1 голос
/ 05 мая 2009

%%r будет содержать полное имя файла, включая пробелы. Это ваш звонок на unrar, который имеет проблемы. Если имя файла содержит пробелы, его необходимо заключить в кавычки, иначе unrar не сможет увидеть, что два (разделенных пробелами) параметра file и name.rar на самом деле представляют собой одно имя файла с пробелом .

Таким образом, будет работать следующее:

for %%r in (*.rar) do unrar "%%r"

Кроме того, если вам интересно, в чем проблема, иногда очень полезно просто заменить вызов программы на echo:

for %%r in (*.rar) do @echo %%r

где вы увидите, что %% r включает пробелы в именах файлов и не разрывает их на части.

0 голосов
/ 05 мая 2009

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

...