Recupérer une info dans un fichier
crac123
-
karirovax Messages postés 3221 Date d'inscription Statut Membre Dernière intervention -
karirovax Messages postés 3221 Date d'inscription Statut Membre Dernière intervention -
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
A voir également:
- Recupérer une info dans un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
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
= 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+
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
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+
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'
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