je la commande suivante for
Comment citer des espaces dans la commande d'un « pour/F » boucle sous Windows
for /F %s in ('"mas ter\gradlew.bat" -q -p mass ter') do echo %s
Et je ne comprends pas qu'il fonctionne correctement. Ce n'est pas le cas d'utilisation réel, mais un exemple très simplifié.
exécution
"mas ter\gradlew.bat" -q -p "mas ter"
fonctionne très bien,
"mas ter\gradlew.bat" -q -p mass ter
dit que le projet direcotry "masse" n'existe pas (extra "s" pour distinguisihing fin seulement),
mas ter\gradlew.bat -q -p mass ter
indique que la commande "mas" n'a pas été trouvée. Jusqu'ici attendu, mais maintenant je veux le faire fonctionner dans la boucle for.
for /F %s in ('mas ter\gradlew.bat -q -p mass ter') do echo %s
bien sûr dit à nouveau cette commande « mas » n'a pas été trouvé,
for /F %s in ('"mas ter\gradlew.bat" -q -p mass ter') do echo %s
bien sûr dit à nouveau ce projet direcotry « masse » n'existe pas, mais maintenant il vient,
for /F %s in ('"mas ter\gradlew.bat" -q -p "mass ter"') do echo %s
indique à nouveau que la commande "mas" n'a pas été trouvée. o_O
Et maintenant je suis au wtf.
Pourquoi cela se produit-il et comment le faire fonctionner?
Il ne fonctionne pas non plus pour échapper les espaces avec ^
caractères.
En outre, cela ne contribuerait pas, parce que les deux chemins sont stockés dans les paramètres et sont utilisés comme
for /F %s in ('"%script_path%\gradlew.bat" -q -p "%script_path%"') do echo %s
Merci pour les commentaires @Vampire, alors probablement pourquoi ne pas utiliser 'set script_dir =% ~ sdp0' pour obtenir 8,3 nom et pas besoin d'appel aussi? –
Une question maintenant supprimée a également suggéré 8.3 noms, malheureusement ils peuvent être désactivés et même s'ils sont activés, seuls les chemins nouvellement créés en obtiennent un. Pour moi. g. C les a activés, D désactivé et je ne l'ai pas fait intentionnellement. Donc, l'utilisation de noms 8.3 n'est pas très fiable. Sinon, cela aurait été une solution valable, car alors vous n'auriez jamais besoin de guillemets autour de la commande. – Vampire