Recupérer une info dans un fichier

crac123 -  
karirovax Messages postés 3584 Statut Membre -
Bonjour,

Je travaille en script Windows et je cherche à récupérer une information dans un fichier TXT afin de le mettre dans un variable et l'exécuter.

Voici un exemple de ce que j'ai fait :
REM affectation des variables d'environnement
set /P SID="Nom du SID du systeme SAP"
set /P CLIENT="Nom du Mandant du systeme SAP"
set /P SERVER="Entrée le nom du serveur"
set PF=\\%SERVER%\sapmnt\trans\bin\TP_DOMAIN_%SID%.PFL
set /P FIC_OT="Le chemin et le nom du fichier d'OTs"
set LOG=\\%SERVER%\sapmnt\trans\Import_OT.log
set YYYYMMDD=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%

REM Main
@echo off
cls
color 5F
echo.
echo "--== addtobuffer+import into %SID% %CLIENT% ==--"
echo. >> %LOG%
echo "--== addtobuffer+import into %SID% %CLIENT% ==--" >> %LOG%
echo %YYYYMMDD%
echo %YYYYMMDD% >> %LOG%
echo "--=====================--"
echo "--=====================--" >> %LOG%
FOR /F %%a IN %FIC_OT% DO SET ORDRE=%%a
tp addtobuffer pf=%PF% %ORDRE% %SID%
tp importbuffer pf=%PF% %ORDRE% %SID% >> %LOG%

Avez-vous une idée à mon PB ?
Merci d'avance
A voir également:

6 réponses

crac123
 
J'ai ameliorer mon script mais j'ai une erreur :
= was unexpected exit time

Voici le nouveau code :
@echo off
:: script de passage d'OT
:: ----------------------------

title Passage d'OTs en masse...

:variable
set /P SID="Nom du SID du système SAP "
set /P CLIENT="Nom du Mandant du système SAP "
set /P SERVER="Entrée le nom du serveur "
set PF=\\%SERVER%\sapmnt\trans\bin\TP_DOMAIN_D1E.PFL
set LOG=\\%SERVER%\sapmnt\trans\Import_OT.log
set TRANSDIR=\\%SERVER%\sapmnt\trans\

:main
cls
color 5F
echo.
echo "--========================================--"
echo "script de passage d'OT en masse sous Windows"
echo "--========================================--"
echo.
rem récupérer le contenu dans un fichier
FOR /F %%A in (\\%SERVER%\sapmnt\trans\fichierOT.txt) DO set VAR=%%A
set PROFILE=pf=%PF%
echo %PROFILE%
set CL=client=%CLIENT%
echo %CL%
echo %VAR% %SID% %CL% %PROFILE% u12368
tp addbuffer pf=%PF% %%A %SID% client=%CLIENT%
tp importbuffer %VAR% %SID% client%CLIENT% pf=%PF% u12368 >> %LOG%

:errormsg
rem si le code retour est superieur à 8 alors mettre le message dans une log
if exit "rc"=<"8" >> %LOGS% else goto :end

:end
echo Fin de programme
pause
exit

Merci à l'avance de votre aide
0
crac123
 
Nom problème est plus sur le "IF".

Les manipulation que je souhaite faire sont chercher un code erreur dans un fichier puis s'il est supérieur à 7 alors je l'intègre dans un autre fichier TXT en mettant en même un message d'erreur au niveau d'un batch.

A+
0
karirovax Messages postés 3584 Statut Membre 204
 
Salut crac123

oui, l'écriture du commande IF que vous faites est faute ??

que veux dire "rc" aprés le IF ( il faut quel est un fichier en général car la commande IF EXIST doit suivi d'un nom de fichier et pas d'un variable ou une chaine ?? )

soit vous deverez écrire :

if exist nomdufichier COMMANDE ( dans votre cas je pense que la meilleure commande est ECHO %nomduvariable%>>%LOGS% )

ainsi l'écriture de la commande IF ... ( commande ) else ( commande ) et pas IF commande else commande
0
crac123
 
Merci karirovax,

Cependant je souhaite faire une recherche dans un fichier afin de récupérer le code erreur.

le contenu du fichier de log
...
tp finished with return code: 12
...

Après avoir récupérer ce code, je veux effectuer un tri afin d'effectuer un commande. enfin je m'explique un peu plus :
Si le code est supérieur à 7 alors je veux écrire un message dans la logs.

J'ai travaillé sur la condition
FOR /F "skip=8 tokens=2 delims=:" %%a in (C:\tmp.txt) do if %%a geq 7 echo %%a

* En premier, je n'aime pas de faire un "skip" car je préfère récupérer le code suivante le texte précédemment et je récupère d'autre code à la suite de cette 8ème ligne.
* En second, je n'arrive pas à supprimer l'espace avant le chiffre
* En troisième, je n'ai pas encore travailler sur l'écriture dans un fichier.

A+
0
karirovax Messages postés 3584 Statut Membre 204
 
Re,

oui vous avez tjr des problèmes dans les deux commandes ( IF et FOR )

vous dites : Si le code est supérieur à 7 .... et vous écrivez GEQ au lieu de GTR !!
voici l'aide sur les op-de-comp "Opérateur de comparaison" :

EQU - égal à
NEQ - différent de
LSS - inférieur à
LEQ - inférieur ou égal à
GTR - supérieur à
GEQ - supérieur ou égal à

essayez de remplacer C:\tmp.txt par type C:\tmp.txt
sinon avec la commande 'find'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
crac123
 
Merci mais j'ai trouvé la solution.

Merci à tous
0
thanassos Messages postés 2624 Statut Contributeur 137
 
for /f "delims=" %%i in ('type fichier.txt') do (echo "%%i")
te permet normalement de lire le fichier txt
0