Pergunta

Eu estou tentando extrair lote algumas de rar que são de alguma zip em alguns diretórios. Para encurtar a história este é o meu percorrer os arquivos RAR:

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

unrar x %%r
)

O problema é que %% r obtém o valor errado. Se o nome de arquivos é "name.rar Arquivo" e depois %% r recebe o "file" valor -. Ele pára no primeiro espaço no nome do arquivo

Como faço para obter este loop para arquivos de arquivo de trabalho com espaços em nomes?

Obrigado

Foi útil?

Solução

Tente isto:

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

Se você estiver usando-lo em um arquivo de lote, lembre-se que você terá que dobrar os sinais por cento, para escapar deles.

Outras dicas

%%r conterá o nome do arquivo completo, incluindo espaços. É a sua chamada para unrar que tem o problema. Se o nome do arquivo contém espaços você tem que colocá-lo entre aspas, caso contrário unrar não será capaz de ver que os dois parâmetros file e name.rar são na verdade um único nome de arquivo com um espaço (separados por espaço).

Então, o seguinte irá funcionar:

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

Além disso, se você aer curioso, onde as mentiras de problema, às vezes é muito útil para simplesmente substituir a chamada do programa com eco:

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

, onde você vai ver que %% r inclui os espaços em nomes de arquivos e não rasgar-los.

O problema é que 'para' espaço de usos como padrão delimitado. Você pode definir isso usando o delims = xxx. olhar aqui para a sintaxe. Ou você pode usar forfiles .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top