IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Travailler avec un fichier au format unix [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut Travailler avec un fichier au format unix
    Bonjour,

    Je dispose dans mon script batch du code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    :check_sum
    %sha256deep% -b %pathname%\*.* > %pathname%\%def_h0%
    for /f "tokens=1,* delims= " %%a in (%pathname%\%def_h0%) do (
      echo SHA256 ^(%%b^) = %%a >> %pathname%\%def_h1%
      type %pathname%\%def_h1% | %findstr% -v "(def_h0.tmp)" >> %pathname%\%def_h2%
      del %pathname%\%def_h0% %pathname%\%def_h1%
    )
    echo.
    echo =^> Save SHA-256 file: complete.
    echo.
    goto quit_program
    Celui-ci génère en sortie un fichier SHA256 au format Windows.

    Je veux utiliser ce même code afin qu'il génère un fichier au format unix, je rajoute simplement l'option -0 comme l'est spécifié dans la documentation de sha256deep.exe
    comme suit (d'ailleurs j'obtiens bien un fichier au format unix):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    %sha256deep% -b -0 %pathname%\*.* > %pathname%\%def_h0%
    <------- à partir d'ici tout le code qui suit ne fonctionne plus ------->
    for /f "tokens=1,* delims= " %%a in (%pathname%\%def_h0%) do (
      echo SHA256 ^(%%b^) = %%a >> %pathname%\%def_h1%
      type %pathname%\%def_h1% | %findstr% -v "(def_h0.tmp)" >> %pathname%\%def_h2%
      del %pathname%\%def_h0% %pathname%\%def_h1%
    )
    echo.
    echo =^> Save SHA-256 file: complete.
    echo.
    goto quit_program
    Comment se fait-il comme indiqué un peu plus haut que toutes les commandes se trouvant dans la boucle for et la boucle for elle-même ne fonctionne plus ?

    Pourriez-vous me donner de plus amples informations s'il vous plaît ?

    PS: J'ai même utilisé la commande echo.exe (portée sous windows), ainsi que type.exe (portée sous windows également) mais rien y fait.

    Merci

  2. #2
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Salut Olivier,

    Pourquoi le FINDSTR est entre deux % ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type %pathname%\%def_h1% | %findstr% -v "(def_h0.tmp)" >> %pathname%\%def_h2%
    Amicalement

  3. #3
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Citation Envoyé par sachadee Voir le message
    Pourquoi le FINDSTR est entre deux % ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    type %pathname%\%def_h1% | %findstr% -v "(def_h0.tmp)" >> %pathname%\%def_h2%
    Car il est déclaré dans une variable comme les 2 programmes qui l'accompagnent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    set sha256deep=\bin\sha256deep.exe
    set findstr=\bin\findstr.exe
    set diff=\bin\diff.exe
    Mais cela fonctionne enfin plus depuis que le fichier est au format unix

  4. #4
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Les fins de ligne dans le fichier UNIX sont différentes.
    Sous UNIX il y a seulement le <LF>. Alors que sous Dos et Windows a <CR>
    <LF>.

    J'ai fait un test sur ma machine la boucle FOR traite le fichier UNIX exactement de la même manière que le fichier DOS.

    Crée ton fichier normalement pour windows et fais la conversion de ton fichier avec un petit programme comme DOS2UNIX

  5. #5
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Merki

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création d'un fichier au format unix
    Par spirodeau dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 16/11/2006, 16h55
  2. Travailler avec un fichier XML de grande taille
    Par Jayme65 dans le forum Flash
    Réponses: 9
    Dernier message: 29/05/2006, 17h09
  3. Réponses: 2
    Dernier message: 14/03/2006, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo