Extraire des données
Résolubarnabe0057 -
J'ai un fichier test.txt qui contient les infos suivante:
;
; Message Information file;[message]origmailbox=029context=app-vmblastmacrocontext=exten=1rdnis=unknownpriority=1callerchan=SIP/Bouygue-00000ba5callerid="testVoiceMail/BAL1030" <1030>origdate=Tue Jun 20 06:40:00 AM UTC 2017origtime=1497940800category=flag=duration=12
Je souhaite extraire les infos <1030> Jun 20 06:40:00 pour les écrire dans un fichier info.txt.
Tout cela grâce à un fichier .bat.
pouvez-vous m'aidez car mes connaissances sont limités dans le domaine.
Merci d'avance.
- Extraire des données
- Trier des données excel - Guide
- Extraire son video - Guide
- Extraire texte d'une image - Guide
- Extraire image pdf - Guide
- Reconsidérer le traitement de vos données à des fins publicitaires - Accueil - Réseaux sociaux
5 réponses
L’objectif est d’extraire la date et l’heure sous forme <1030> Jun 20 06:40:00 dans test.txt et de les écrire dans info.txt via un script batch Windows.
Plusieurs propositions techniques évoquent l’emploi de for /f avec délimiteurs et tokens pour cibler la partie après le signe <, ou l’utilisation de delims personnalisés comme = et < pour extraire directement la date‑heure.
En pratique, les échanges portent sur l’ajustement des délimiteurs, le ciblage de lignes comme origdate et la redirection vers info.txt, avec des retours d’erreurs liés aux chemins et formats.
Dernier élément utile: certaines solutions montrent qu’un paramètre eol et l’usage de tokens peuvent préserver le format original et éviter des échecs lorsque des lignes contiennent des guillemets ou des espaces.
Là tout de suite je n'ai pas de windows pour tester, mais ça devrait ressembler à ça :
@echo off
setlocal enabledelayedexpansion
for /f "eol=µ tokens=1,* delims=^<" %%A in (test.txt) do (
set infos=%%B
set infos=!infos:~0,34!
echo !infos!
)
endlocal
pause
exit
“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
@echo off
setlocal enabledelayedexpansion
for /f "eol=µ tokens=1,* delims=^<" %%A in (test.txt) do (
set infos=%%B
set infos=!infos:~0,34!
echo !infos! > "cheminacces\infos.txt"
)
endlocal
pause
exit
@echo off
setlocal enableextensions enabledelayedexpansion
set source=%USERPROFILE%\Pictures\Debut
cd %source%
for /f "eol=µ usebackq tokens=1,* delims=<" %%A in ("test.txt") do (
set infos=%%B
set infos=!infos:~0,38!
echo ^<!infos! > infos.txt
)
endlocal
pause
exit
“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
;
; Message Information file
;
[message]
origmailbox=029
context=app-vmblast
macrocontext=
exten=1
rdnis=unknown
priority=1
callerchan=SIP/Bouygue-00000ba5
callerid="testVoiceMail/BAL1030" <1030>
origdate=Tue Jun 20 06:40:00 AM UTC 2017
origtime=1497940800
category=
flag=
duration=12
@echo off
setlocal enableextensions enabledelayedexpansion
set source=%USERPROFILE%\Pictures\Debut
cd %source%
echo. & echo le script travaille dans le dossier %CD%
echo. & pause
echo.
if not exist "test.txt" (echo le fichier n'existe pas)
echo. > infos.txt
for /f "eol=µ usebackq tokens=1,* delims=<" %%A in ("test.txt") do (
echo %%A ######### %%B
set infos=%%B
set infos=!infos:~0,38!
echo ^<!infos! >> infos.txt
)
endlocal
pause
exit
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionNouveau besoin sur le meme sujet.
Les infos extraite doivent etre moins nombreuse.
Pouvez-vous m'aidez ?
Il me faut uniquement le numero de téléphone.
voici les infos d'un fichier texte
;; Message Information file;[message]origmailbox=029context=app-vmblastmacrocontext=exten=1rdnis=unknownpriority=1callerchan=SIP/Bouygue0000734callerid="testVoiceMail/BAL0674821585" <674821585>origdate=Fri Jun 16 10:13:18 PMUTC 2017origtime=1497617604category=flag=duration=15
;; Message Information file;[message]origmailbox=029context=app-vmblastmacrocontext=exten=1rdnis=unknownpriority=1callerchan=SIP/Bouygue0000733callerid="testVoiceMail/BAL0674821585" <674821585>origdate=Fri Jun 16 11:15:20 PMUTC 2017origtime=1497617604category=flag=duration=15
;; Message Information file;[message]origmailbox=029context=app-vmblastmacrocontext=exten=1rdnis=unknownpriority=1callerchan=SIP/Bouygue0000735callerid="testVoiceMail/BAL0674821585" <674821585>origdate=Fri Jun 16 12:53:24 PMUTC 2017origtime=1497617604category=flag=duration=15
;; Message Information file;[message]origmailbox=029context=app-vmblastmacrocontext=exten=1rdnis=unknownpriority=1callerchan=SIP/Bouygue0000736callerid="testVoiceMail/BAL0674821585" <674821585>origdate=Fri Jun 16 13:53:00 PMUTC 2017origtime=1497617604category=flag=duration=15
Il me faut extraire le <674821585>
J'ai un dossier partager nommé J: dans lequel se trouve un fichier msgxxx.txt et msgxxx.wav.
Je doit recupérer le numero de tel du fichier msgxxx.txt pour le copier dans un fichier infos.txt qui se trouve dans le chemin C:\Users\Utilisateur\Desktop\Script LDNathan\blat\blat3216\docs\infos.txt.
Dans ce meme chemin se trouve mon script pour extraire et copier dans le fichier infos.txt.
voici mon script actuel.
Celui-ci ne marche pas
@echo off
setlocal enableextensions enabledelayedexpansion
for /r "J:\" %%i in (*.wav) do set msg=%%~nxi
echo %msg%
for /r "J:\" %%i in (*.txt) do set msgt=%%~nxi
echo %msgt%
cd "J:\"
echo. > "C:\Users\Utilisateur\Desktop\Script LDNathan\blat\blat3216\docs\infos.txt"
for /f "usebackq eol=µ tokens=1,2 delims=<>" %%A in ("J:\%msgt%") do (echo %%B) do (
if /i "%%A"=="callerid" (call :numero "%%B")
if /i "%%A"=="origdate" (echo ^<!num!^> %%B >> "C:\Users\Utilisateur\Desktop\Script LDNathan\blat\blat3216\docs\infos.txt")
)
endlocal
call "C:\Users\Utilisateur\Desktop\Script LDNathan\blat\blat3216\docs\envoie.bat"
exit
:numero
for /f "usebackq tokens=1,2 delims=^<^>" %%E in ('%1') do (
set num=%%F
)
goto :eof
Merci d'avance.
@echo off
setlocal enableextensions enabledelayedexpansion
pushd J: || goto :eof
set dossier=%USERPROFILE%\Desktop\Script LDNathan\blat\blat3216\docs
echo. > "%dossier%\infos.txt"
for %%i in (*.wav) do (call :numero "%%~nxi")
for %%i in (*.txt) do (call :numero "%%~nxi")
call "%dossier%\envoie.bat"
endlocal
popd
echo. & pause
exit
:numero
for /f "usebackq eol=µ tokens=1,2 delims=<>" %%A in ("%~1") do (set num=%%B)
echo. & echo ==^>^> %~1 [!num!]
echo !num! >> "%dossier%\infos.txt"
goto :eof
rem
En attendant ça dit quoi si tu remplaces
par
ma commande echo est agrémenté de > "cheminacces\infos.txt" pour stocker les infos dans un fichier texte.
Ca devrait donner ça :
<1030>origdate=Tue Jun 20 06:40:00 AM UTC 2017origtime=1497940800category=flag=duration=12