Recupérer une info dans un fichier
crac123
-
karirovax Messages postés 3584 Statut Membre -
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
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
6 réponses
-
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 -
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+ -
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 -
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+-
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'
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
for /f "delims=" %%i in ('type fichier.txt') do (echo "%%i")
te permet normalement de lire le fichier txt