Extrait de lot rar avec des espaces dans les noms
-
03-07-2019 - |
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
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.