Question

J'essaie d'extraire par lots des fichiers rar se trouvant dans certains répertoires. Longue histoire courte c'est ma boucle à travers les fichiers rar:

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

unrar x %%r
)

Le problème est que %% r obtient la mauvaise valeur. Si le nom du fichier est " nom du fichier.rar " alors %% r obtient la valeur " fichier " - il s’arrête au premier espace du nom du fichier.

Comment puis-je obtenir cette boucle pour travailler des fichiers avec des espaces dans les noms?

Merci

Était-ce utile?

La solution

Essayez ceci:

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

Si vous l'utilisez dans un fichier de traitement par lots, n'oubliez pas que vous devrez doubler les signes de pourcentage pour les échapper.

Autres conseils

%% r contiendra le nom de fichier complet, y compris les espaces. C'est votre appel à unrar qui pose problème. Si le nom de fichier contient des espaces, vous devez le mettre entre guillemets, sinon unrar ne pourra pas voir que les deux paramètres (séparés par des espaces) fichier et < code> name.rar est en fait un nom de fichier unique avec un espace.

Les éléments suivants fonctionneront donc:

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

En outre, si vous êtes curieux de savoir où est le problème, il est parfois très utile de simplement remplacer l'appel du programme par echo:

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

où vous verrez que %% r inclut les espaces dans les noms de fichiers et ne les déchire pas.

Le problème est que "pour" utilise l'espace comme délimité par défaut. Vous pouvez définir ceci avec delims = xxx. Regardez ici pour connaître la syntaxe. Vous pouvez également utiliser ForFiles .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top