J'ai un problème d'affectation de variables dans le script DOS pour la boucle. Il n'attribue jamais la valeur, c'est toujours vide. Ci-dessous l'exemple de codeProblème d'affectation de variable dans le fichier de commandes DOS pour la boucle
@echo off
set ans=%1
SET STRING=%ans:"=%
echo Parsing the string "%STRING%":
for /f "tokens=1-2" %%a in ("%STRING%") do (
set Word1 =%%a
echo Word 1: %%a
echo Word 1: %Word1%
set Word2 =%%b
if %%b.==. (Set server =\\.\pipe\mssql$microsoft##ssee\sql\query) else (Set server =%%b)
)
echo Server name "%server%"
sqlcmd -s %server%
valeur
de %% un n'est pas affecté à la variable Mot1. Mais quand je fais écho au %% a, il montre la valeur correcte. De même, dans la dernière valeur vide, vérifiez if condition, la variable du serveur n'a jamais été définie. Je suis très confus ici. Est-ce que quelqu'un peut m'aider??
P.S: entrée au script est une 2 chaîne de mots (ex: a.bat "l dev-server")
Attention, comme expliqué dans cette page http://ss64.com/nt/setlocal.html, cette extension différée n'est pas activée par défaut. Pour l'activer, vous devez ajouter cette ligne dans votre script: SETLOCAL EnableDelayedExpansion –
merci Diego pour plus d'informations. – Sven