Délimiter ou filtrer ou..

OTMANE -  
barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    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
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  3. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    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