La documentation que vous obtenez lorsque vous tapez help for
vous indique ce qu'il faut faire si vous avez un chemin d'accès avec des espaces.
For file names that contain spaces, you need to quote the filenames with
double quotes. In order to use double quotes in this manner, you also
need to use the usebackq option, otherwise the double quotes will be
interpreted as defining a literal string to parse.
Par défaut, la syntaxe de FOR /F
est la suivante.
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
Cette syntaxe montre pourquoi votre type
fonctionne. Parce que les guillemets simples indiquent qu'il faut exécuter la commande type
et de passer en boucle sur sa sortie. Lorsque vous ajoutez la commande usebackq
la syntaxe devient la suivante :
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ('string') DO command [command-parameters]
FOR /F ["options"] %variable IN (`command`) DO command [command-parameters]
Désormais, vous mettez les chemins d'accès aux fichiers entre guillemets, les chaînes de caractères littérales entre guillemets simples et les commandes à exécuter entre crochets (accents graves).
Vous voulez donc faire ceci :
for /f "usebackq" %%a in ("C:\Program Files\myfolder\myfile.txt") do (
echo %%a
)