Délimiter ou filtrer ou..

Fermé
OTMANE - 10 avril 2017 à 15:18
barnabe0057 Messages postés 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 - 11 avril 2017 à 14:38
Bonjour,
j'ai un fichier txt (recievers et sources pour le contrôle des donnes sismique)
le fichier contient xxx lignes commence par G1 et yyy lignes commence par G2 et .........zzz lignes commence par G300.alors je veux faire 300 fichier G1,G2,G3,G4,G5,...G300
Merci beaucoup


3 réponses

barnabe0057 Messages postés 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 4 917
Modifié le 11 avril 2017 à 02:25
Bonjour,

1) Pour commencer télécharge Wfile 1.5 ici :
https://www.horstmuc.de/w32dial.htm#wfile

Décompresse l'archive téléchargée, puis copie FileToOpen.exe et FileToSave.exe dans le dossier C:\Windows\System32


2) Ensuite tu peux utiliser ce script fabriqué spécialement pour toi :
@echo off
Setlocal enableextensions enabledelayedexpansion

if not exist %windir%\System32\FileToOpen.exe goto :eof

timeout /t 3 /nobreak

FileToOpen "set data=" "%USERPROFILE%\Desktop\*.txt" "Selectionnez le fichier texte a traiter" > temp0123456.bat
call temp0123456.bat

set destination=%USERPROFILE%\Desktop\OTMANE_CCM

if exist %destination% rmdir /S /Q %destination%
mkdir %destination%\OTMANE

for /f "usebackq tokens=* delims=ù" %%A in (%data%) do (
set ligne=%%A
set entete=G

for /L %%E in (1,1,3) do (
set chiffre=!ligne:~%%E,1!

if "!chiffre!"=="0" (set entete=!entete!!chiffre!)
if "!chiffre!"=="1" (set entete=!entete!!chiffre!)
if "!chiffre!"=="2" (set entete=!entete!!chiffre!)
if "!chiffre!"=="3" (set entete=!entete!!chiffre!)
if "!chiffre!"=="4" (set entete=!entete!!chiffre!)
if "!chiffre!"=="5" (set entete=!entete!!chiffre!)
if "!chiffre!"=="6" (set entete=!entete!!chiffre!)
if "!chiffre!"=="7" (set entete=!entete!!chiffre!)
if "!chiffre!"=="8" (set entete=!entete!!chiffre!)
if "!chiffre!"=="9" (set entete=!entete!!chiffre!)
)

set entete=%destination%\!entete!.txt
if not exist !entete! (echo !ligne! > !entete!) else (echo !ligne! >> !entete!)
)

del /F temp0123456.bat

explorer /select,"%destination%\OTMANE"

Endlocal
exit
0
dubcek Messages postés 18752 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 3 octobre 2024 5 619
11 avril 2017 à 14:06
hello
peut-on voir un exemple de ligne ?
y a-t-il un caractère particulier après le nombre qui puisse servir de séparateur ?
0
barnabe0057 Messages postés 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 4 917
Modifié le 11 avril 2017 à 14:52
Voilà une légère amélioration du script :

@echo off
Setlocal enableextensions enabledelayedexpansion

if not exist %windir%\System32\FileToOpen.exe goto :eof

timeout /t 3 /nobreak

FileToOpen "set data=" "%USERPROFILE%\Desktop\*.txt" "Selectionnez le fichier texte a traiter" > temp.bat
call temp.bat

if not defined %data% goto :eof

set destination=%USERPROFILE%\Desktop\OTMANE_CCM

if exist %destination% (rmdir /S /Q %destination%)
mkdir %destination%\OTMANE

for /f "usebackq tokens=* delims=ù" %%A in (%data%) do (
set ligne=%%A
if "!ligne:~0,1!"=="G" call :action
)

del /F temp.bat

explorer /select,"%destination%\OTMANE"

Endlocal
exit

:action
set entete=G

for /L %%E in (1,1,3) do (
set chiffre=!ligne:~%%E,1!
echo !chiffre! | findstr "0 1 2 3 4 5 6 7 8 9" > nul && (set entete=!entete!!chiffre!)
)

set entete=%destination%\!entete!.txt
if not exist !entete! (echo !ligne! > !entete!) else (echo !ligne! >> !entete!)

goto :eof
rem
0