Ce fichier de commandes publie une version de TEST vers LIVE. Je souhaite ajouter une contrainte de vérification dans ce fichier afin de garantir la présence d'un document de version correspondant dans un dossier spécifique.
"C:\Program Files\Windows Resource Kits\Tools\robocopy.exe" "\\testserver\testapp$"
"\\liveserver\liveapp$" *.* /E /XA:H /PURGE /XO /XD ".svn" /NDL /NC /NS /NP
del "\\liveserver\liveapp$\web.config"
ren "\\liveserver\liveapp$\web.live.config" web.config
J'ai donc quelques questions sur la façon de réaliser cela ...
Il y a un fichier version.txt
dans le dossier \\testserver\testapp$
et le seul contenu de ce fichier est le numéro de version (par exemple, 45 - pour la version 45). Comment lire le contenu du fichier version.txt
fichier dans une variable du fichier de commandes?
Comment vérifier si un fichier, \\fileserver\myapp\releasedocs\ {build}.doc
, existe à l'aide de la variable de la partie 1 à la place de {build}?
Lire le contenu du fichier dans une variable:
for /f "delims=" %%x in (version.txt) do set Build=%%x
ou
set /p Build=<version.txt
Les deux agissent de la même manière avec une seule ligne dans le fichier. Pour plusieurs lignes, la variante for
mettra la ligne last dans la variable, tandis que set /p
utilisera le signe - premier.
Utiliser la variable - comme toute autre variable d’environnement - c’est un, après tout:
%Build%
Donc, pour vérifier l'existence:
if exist \\fileserver\myapp\releasedocs\%Build%.doc ...
Bien qu'il soit possible qu'aucun chemin UNC n'y soit autorisé. Je ne peux pas tester cela maintenant, mais gardez cela à l'esprit.
Vous pouvez lire plusieurs variables d'un fichier comme ceci:
for /f "delims== tokens=1,2" %%G in (param.txt) do set %%G=%%H
où param.txt:
PARAM1=value1
PARAM2=value2
...
il suffit de faire:
type version.txt
et il sera affiché comme si vous aviez tapé:
set /p Build=<version.txt
echo %Build%
Pour que toutes les lignes du fichier soient chargées dans la variable, une extension retardée est nécessaire. Procédez comme suit:
SETLOCAL EnableDelayedExpansion
for /f "Tokens=* Delims=" %%x in (version.txt) do set Build=!Build!%%x
Il y a un problème avec certains caractères spéciaux, mais en particulier ;
, %
et !