J'ai un fichier batch et je veux inclure un fichier externe contenant certaines variables (dites variables de configuration). Est-il possible?
Réponses
Trop de publicités?Note: je suis en supposant que Windows fichiers batch comme la plupart des gens semblent ignorer qu'il existe d'importantes différences et seulement aveuglément tout appeler avec texte en gris sur fond noir DOS. Néanmoins, la première variante de travail dans DOS ainsi.
Exécutable de configuration
La façon la plus simple pour ce faire est juste de mettre les variables dans un fichier de commandes elles-mêmes, chacune avec sa propre set
déclaration:
set var1=value1
set var2=value2
...
et dans le lot:
call config.cmd
Bien sûr, qui permet également de variables à être créé de manière conditionnelle ou selon les aspects du système, il est assez polyvalent. Toutefois, le code arbitraire peut courir là-bas et si il y a une erreur de syntaxe, votre principale lot d'une sortie de trop. Dans le monde UNIX, cela semble être assez commun, surtout pour les coques. Et si vous pensez à ce sujet, autoexec.bat
n'est rien d'autre.
Des paires clé/valeur
Une autre façon serait une sorte de var=value
paires dans le fichier de configuration:
var1=value1
var2=value2
...
Vous pouvez ensuite utiliser le code suivant pour les charger:
for /f "delims=" %%x in (config.txt) do (set "%%x")
Ceci utilise une astuce similaire comme avant, à savoir que l'aide d' set
sur chaque ligne. Les guillemets sont là pour échapper à des choses comme l' <
, >
, &
, |
. Cependant, ils vont se casser quand on utilise les guillemets dans l'entrée. Aussi, vous devez toujours être prudent lors de la poursuite du traitement des données dans les variables stockées avec de tels caractères.
Généralement, automatiquement échapper à l'arbitraire d'entrée de cause pas de maux de tête ou des problèmes dans des fichiers batch semble assez impossible pour moi. Au moins je n'ai pas trouver un moyen de le faire encore. Bien sûr, avec la première solution vous poussez la responsabilité de l'écriture du fichier de configuration.
Si le fichier de configuration externe est également valable fichier de commandes, vous pouvez utiliser:
call externalconfig.bat
à l'intérieur de votre script. Essayez de créer à la suite d'une.chauve-souris:
@echo off
call b.bat
echo %MYVAR%
et b.chauve-souris:
set MYVAR=test
L'exécution d'un.chauve-souris devrait générer en sortie:
test
Lot utilise le moins et de plus de parenthèses, comme l'entrée et la sortie des tuyaux.
>file.ext
En utilisant une seule sortie sur support, comme ci-dessus va écraser toutes les informations contenues dans ce fichier.
>>file.ext
À l'aide de la double crochet droit qui va ajouter la ligne suivante dans le fichier.
(
echo
echo
)<file.ext
Cela permettra d'exécuter les paramètres sur la base des lignes du fichier. Dans ce cas, nous allons utiliser les deux lignes qui sera saisi à l'aide de "l'echo". Le crochet gauche en touchant le droit de la parenthèse la parenthèse signifie que les informations de ce fichier sera acheminée dans ces lignes.
J'ai compilé un exemple uniquement en lecture/écriture de fichier. Ci-dessous le fichier est divisé en sections pour expliquer ce que chaque partie ne.
@echo off
echo TEST R/W
set SRU=0
SRU peut être quelque chose dans cet exemple. Nous sommes en fait le réglage pour éviter un plantage si vous appuyez sur Entrée trop rapide.
set /p SRU=Skip Save? (y):
if %SRU%==y goto read
set input=1
set input2=2
set /p input=INPUT:
set /p input2=INPUT2:
Maintenant, nous devons écrire les variables dans un fichier.
(echo %input%)> settings.cdb
(echo %input2%)>> settings.cdb
pause
J'utilise .cdb comme un court formulaire pour la Commande "Base de données". Vous pouvez utiliser n'importe quelle extension. La section suivante est de tester le code à partir de zéro. Nous ne voulons pas utiliser l'ensemble des variables qui ont été exécutés au début du fichier, en fait, nous voulons à la charge DE l'paramètres.le cdb nous venons d'écrire.
:read
(
set /p input=
set /p input2=
)<settings.cdb
Donc, nous avons juste les canalisations de la première deux lignes d'informations que vous avez écrit au début du fichier (que vous avez la possibilité d'ignorer le réglage de la lignes de vérifier pour s'assurer qu'il fonctionne) pour définir les variables d'entrée et de input2.
echo %input%
echo %input2%
pause
if %input%==1 goto newecho
pause
exit
:newecho
echo If you can see this, good job!
pause
exit
Cela affiche les informations qui ont été définis lors de paramètres.la cdb a été acheminée dans la parenthèse. Comme un supplément de bien-emploi de motivation, en appuyant sur entrée et réglage des valeurs par défaut, qui nous l'avons défini plus haut comme "1" sera de retour un bon travail de message. En utilisant le support de tuyaux va dans les deux sens, et il est beaucoup plus facile que de définir la "POUR les" choses". :)
Si vous avez juste à faire de ce droit?:
@echo off
echo text shizzle
echo.
echo pause^>nul (press enter)
pause>nul
REM writing to file
(
echo XD
echo LOL
)>settings.cdb
cls
REM setting the variables out of the file
(
set /p input=
set /p input2=
)<settings.cdb
cls
REM echo'ing the variables
echo variables:
echo %input%
echo %input2%
pause>nul
if %input%==XD goto newecho
DEL settings.cdb
exit
:newecho
cls
echo If you can see this, good job!
DEL settings.cdb
pause>nul
exit
N'oublions pas le bon vieux paramètres. Lors du démarrage de votre *.chauve-souris ou *.cmd fichier, vous pouvez ajouter jusqu'à neuf paramètres après la commande de nom de fichier:
call myscript.bat \\path\to\my\file.ext type
call myscript.bat \\path\to\my\file.ext "Del /F"
Exemple de script
Le myscript.chauve-souris pourrait être quelque chose comme ceci:
@Echo Off
Echo The path of this scriptfile %~0
Echo The name of this scriptfile %~n0
Echo The extension of this scriptfile %~x0
Echo.
If "%~2"=="" (
Echo Parameter missing, quitting.
GoTo :EOF
)
If Not Exist "%~1" (
Echo File does not exist, quitting.
GoTo :EOF
)
Echo Going to %~2 this file: %~1
%~2 "%~1"
If %errorlevel% NEQ 0 (
Echo Failed to %~2 the %~1.
)
@Echo On
Exemple de sortie
c:\>c:\bats\myscript.bat \\server\path\x.txt type
The path of this scriptfile c:\bats\myscript.bat
The name of this scriptfile myscript
The extension of this scriptfile .bat
Going to type this file: \\server\path\x.txt
This is the content of the file:
Some alphabets: ABCDEFG abcdefg
Some numbers: 1234567890
c:\>c:\bats\myscript.bat \\server\path\x.txt "del /f "
The path of this scriptfile c:\bats\myscript.bat
The name of this scriptfile myscript
The extension of this scriptfile .bat
Going to del /f this file: \\server\path\x.txt
c:\>