Affecter à une variable une chaine depuis un fichier - Win NT/2K/XP - Windows & Software
Marsh Posté le 01-04-2007 à 15:24:34
Pour affecter la variable a avec la chaine de caratère jojo par un fichier script nommé test.bat et
Puis afficher le résultat.
edit test.bat
@set a=jojo
@echo %a%
Sauvegarder le fichier
.\test.bat
jojo
Cela ne marche pas en mode commande direct, pour le voir (echo %a%) Il faut impérativement le mettre dans un ficher .bat
Marsh Posté le 01-04-2007 à 16:17:17
Avant de me lancer, un pb se pose et j'aurai dû l'expliquer avant :
Dans le même test.bat, tu définis la valeur de %a%.
Mon pb est que c'est un nouveau bat indépendant d'un premier qui devra
quand même trouver cette valeur, c'est pour ça que je n'ai pas trouvé de meilleure méthode que de l'écrire dans un fichier var.tmp
Celui-ci contient nomd'utilisateur.
De cette façon, je peux faire pour l'exemple un nouveau script qui donnera comme résultat à l'écran coucou jojo.
(pour mon cas c'est start \\ipdistante\jojo-mesdocuments$ de sorte à lancer la fenêtre grâce à un raccourci).
Merci de ton aide
Marsh Posté le 01-04-2007 à 16:44:15
ReplyMarsh Posté le 01-04-2007 à 17:16:28
krisofe a écrit : up svp, j'ai un travail à rendre demain, snif... |
J'en ai un
Ecoute de la musique ça va te détendre.
Marsh Posté le 01-04-2007 à 17:29:31
Ce qui m'aurait détendu, c'est d'avoir une réponse...
La musique, c'était mon taf, quand je veux me détendre avec, j'en fais ;-)
Marsh Posté le 01-04-2007 à 21:25:51
Et bien tu fais un script principal qui appelle les autres avec des variables en utilisant l'instruction call;
call test1.bat %a%
call test2.bat %b%
Sinon, je ne pense pas que nous sommes la pour faire ton boulot :\
Je sais pas, je suis peut-être un peu dur sûrement, le fais du 1er avril.
Avec ces éléments supplémentaires, tu peux réfléchir un peu avant demain. Il y a encore le temps, sinon il fallait t'y prendre plus tôt ou sinon, il y a forcement une raison de force majeur que tu pourras produire en lieu et place de ton boulot.
Bon courage mon gars.
Tu as bien mal tourné, quelqu'un qui faisait un taf dans la musique, être obligé aujourd'hui de réfléchir sur les variables sous dos. %-\
Doublement bon courage.
Marsh Posté le 01-04-2007 à 21:45:29
Merci firsorangutan ;-)
Je vais considérer les "call" et voir...
Ensuite, ce n'est qu'un stage et faut pas trop que je m'affole, mais étant donné que c'est plus ou moins moi qui fait le cahier des charges, je t'avoue que je me déstabilise facilement. Désolé donc.
Concernant la musique, c'est une autre histoire...
Même pas le SMIC avec 2 seconds prix de conservatoire, avec des parodies de professeurs "gourous de la musique"
Je t'avoue qu'aujourd'hui, même si je m'ennuie passablement et me fatigue tellement en tant que technicien, je n'ai jamais été si heureux d'avoir un confort de vie convenable et de caresser mon instrument sans imaginer que chaque coup que je donne (batterie) doit être lucratif. Et en info, tu peux pas barratiner. C'est quelque chose de fort.
A suivre...
Pour notre call :
si je fais juste call test1.bat %a%, je peux donc écrire
call test1.bat %a%|set var=%a% ??
Je dois t'avouer que je ne trouve pas beaucoup d'aide sur le net.
Merci encore
Marsh Posté le 01-04-2007 à 22:24:51
Tu devrais lire le help sous dos avant de regarder sur le net:
help set
help call
Tu as du tomber sur des aides de shell unix et tu mélanges un peu je pense même "|" a aussi une fonction sous dos.
Pour un exemple plus précis:
tu édites un fichier test1.bat et tu tapes:
@REM =============
@echo +++++++++ %a%
@echo ............... %1
@set a=autreoctave
@REM =============
Après tu sauvegardes et tu édites un fichier principal.bat ou tu places:
a=monoctave
.\test1 musique1
.\test2 musique2
Tu sauvegardes et alors tu tapes en fichier de commande sous dos:
.\principal.bat
Tu analyses tout cela, devrais avoir tes réponses.
Tu remarqueras qu'à la deuxième exécution du script test1.bat
la variable de %a% a changée car elle a été écrasée lors de la première exécution.
Voili.
Musique mastro, et bonne nuit.
Marsh Posté le 01-04-2007 à 22:47:15
Merci man, sous unix, promis que j'y arrive !
Ici j'avoue que je patauge. J'essaie cela .
Marsh Posté le 01-04-2007 à 23:18:07
Bin je ne dois pas être bien frais...
Est-ce que cela peut s'appliquer pour mon script ?
script 1 :
--------
REM Saisie de l'utilisateur afin de monter les partages depuis le serveur
echo Entrez votre identifiant de connexion pour l'agence :
set log=
set /p log=
echo %log%>%homedrive%\var.tmp
Là j'ai bien un texte en dur dont j'aimerai me servir afin qu'il devienne une variable de sortes à être utilisé par ce second :
script2
-------
set log=
REM La ligne ci-dessous est celle que j'aimerai qui existe !
REM set log=<%homedrive%\var.tmp
start \\ipserveur\%log%-mesdocuments$
C'est pas bien compliqué mais j'avoue ne pas y parvenir, ne sachant pas trop comment adapter tes bonnes infos.
Marsh Posté le 01-04-2007 à 23:47:45
Ben si tu vire le REM dans la ligne REM set log=<%homedrive%\var.tmp
Cela va marcher enfin bon cela te fais un exercice de passage de parametre par fichier.
Script1: (Saisie du nom d'une agence.)
initialisation de la variable log
Affectation par saisie de la variable log (set /p ...)
Sauvegarde du contenu '(nom d'agence)' dans le fichier var.tmp
Script2:
Initialisation variable log
Affectation de la variable log en provenance du fichier var.tmp
==> set log=<%homedrive%\var.tmp #REM viré.
Demarrage d'un executable, donc le nom est composé entre autre du nom d'agence contenu dans la variable log, sur une machine distante.
Ca doit bien se passer. Par contre le "$" dans ton nom d'executable, c'est bizarre. Si c'est un nom de partage, c'est la que tu dois bloquer.
Vire le '$', il n'est valable que lorsque tu indiques un disque physique je crois. Du genre: \\ipserveur\c$ => Point le disque C: sur la machine ipserveur.
Voili.
Marsh Posté le 01-04-2007 à 23:54:20
Si je l'ai mise en REM c'est parce qu'elle marche pas cette commande.
Mais je suis ravi qu'elle te donne l'impression d'être correcte, ce qui
prouve que je nage plutôt que coule ;-)
Sinon, pas de pb pour le mesdocumens$, si je l'ajoute, c'est parce que
c'est une petite combine pour permettre que le dossier partagé ne se voit pas dans l'arborescence windows.
Marsh Posté le 01-04-2007 à 23:58:06
En fait, ça roule grâce au script de montage en premier lieu :
@echo off
cls
REM Saisie de l'utilisateur afin de monter les partages depuis le serveur du
echo Entrez votre identifiant de connexion pour l'agence :
set log=
set /p log=
echo %log%>%homedrive%\var.tmp
echo.
echo 3 fenetres vont s'ouvrir correspondant a vos acces sur le serveur de l'agence :
echo.
echo.
echo -Vos documents distants
echo -Vos documents numerises du photocopieur
echo -Les dossiers communs et le photocopieur accessibles sur le serveur
echo.
echo.
echo.
echo. Vous pouvez a tous moments reacceder a ces dossiers en cliquant droit
echo sur l'icone de connexion dans la barre des taches pres de l'horloge
echo.
echo.
echo.
echo Merci de patienter apres avoir presse une touche
echo.
echo.
echo.
echo.
pause
start \\ipdistante\%log%-mesdocuments$
start \\ipdistante\%log%-scans$
start \\ipdistante
set log=
exit
Marsh Posté le 02-04-2007 à 00:10:26
Bon ben je vais écouter de la musique maintenant, ça va me détendre.
Marsh Posté le 02-04-2007 à 00:14:33
Et après, grâce à Connexion Manager fourni dans le AdminKit de W2KS,
l'utilisateur clic droit dans sa connexion en bas à droite et a plusieurs menus qui justement doivent appeler cte ù$$rghh variable:
set log=
set log=<%homedrive%\var.tmp
start \\ipdistante\%log%-mesdocuments$
Marsh Posté le 02-04-2007 à 00:16:41
Okay, let's dance, je vais me chanter une berceuse moi ;-)
@+, merci
Marsh Posté le 01-04-2007 à 15:12:10
Je cherche désespérement à affecter à une variable une chaîne qui
est dans un fichier en dos.
Dans le genre set var=<var.txt
Quelle est la bonne syntaxe ??