J'ai récemment inclus une ligne similaire à celle-ci dans un fichier .cmd:
for /f %%f in ('dir /b .\directory\*.sql') DO sqlcmd -b -o ".\directory\output\%%f.txt" -i ".\directory\%%f"
À l'origine, je n'avais utilisé que% f, et cela fonctionnait bien lorsqu'il était exécuté sur la ligne de commande, mais pas lorsqu'il était exécuté dans le fichier. Lorsque je suis passé à %% f, cela fonctionnait dans le fichier. Je me demande juste quelle est la différence.
la source
Sous DOS, vous ne pouviez pas utiliser de variables d'environnement sur la ligne de commande, uniquement dans les fichiers batch, où ils utilisaient le
%
signe comme délimiteur. Si vous vouliez un%
signe littéral dans un fichier batch, par exemple dans uneecho
instruction, vous deviez le doubler.Cela s'est répercuté sur Windows NT qui autorisait les variables d'environnement sur la ligne de commande, mais pour la compatibilité descendante, vous devez toujours doubler vos
%
signes dans un fichier .cmd.la source