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 :

Effacer automatiquement certaine donnée dans un fichier texte


Sujet :

Scripts/Batch

  1. #21
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ARCHIGOR Voir le message
    J'ai essayé divers chose
    Le développement logiciel, même simple, n'est pas de faire un truc qui tombe en marche
    La syntaxe que tu utilises pour déclarer tes noms de fichiers est fausse.
    Ceci lit le contenu d'un fichier, puis le contenu récupéré est transformé en une chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $destination = "${C:\temp\Fichier.ps1}"
    ceci déclare un chemin de fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $destination = 'C:\temp\Fichier.ps1'

  2. #22
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2018
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous!

    Tout d'abord un grand merci à Laurent et I'm Here !

    Mon souci restant:
    test avec un fichier
    La boucle ne se lance pas, je suis obligé de lancer le script à chaque fois.
    Le résultat est correct

    Voilà mon erreur mais j'ai bien mon fichier traduit dans le nouveau dossier

    Nom : scriptavec 1fichier.PNG
Affichages : 175
Taille : 50,1 Ko

    Et si il y a plusieurs fichier à transformer
    test avec deux fichiers

    J'ai une erreur et aucun des fichier n'est traduit

    Nom : error script.PNG
Affichages : 189
Taille : 93,8 Ko

    et voilà le scriptage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    $dat_folder = "${C:\Users\ARCHIGOR\Documents\euroseccom\document\compteur de passage synergie\scriptpowershell}"
    $destination = 'C:\Users\ARCHIGOR\Documents\euroseccom\document\compteur de passage synergie\destination scriptpowershell'
     
    # attention manque système de verification de chemin, il faut le créer 
    set-location $dat_folder
     
     
    $part = '([^\|]+)' 
    $parts = ($part + '\|') * 14 + $part
     
    # creation de la ligne de texte ici vous êtes libre de réarranger comme bon vous semble
    $replc = '$1||$3||$5|$8|$9|$11|$12|$13|$14|$15'
     
     
    # je deteste les boucles while($true) et/ou les for draculas (;;)
    function loop {
       param([scriptblock]$scriptblock)
       while($true) { &$scriptblock }
    }
     
     
    loop {
       if($datfile = get-item 'LDM_PC.BOESNER*.dat')
       {
             $destPath = join-path $destination $datfile.Name
             $content = Get-Content -Path $datfile.fullname -ReadCount 1000 | foreach-object {  $_ -replace $parts,$replc }
             $content | out-file $destPath
             if(test-path $destpath)
             {
                 write-host "copie de $($datfile.fullname) -> $destpath"
                 # attention on supprime le fichier dat c'est une solution radicale mais si tu veux une autre approche tu peux rectifier le code
                 remove-item $datfile.fullname
             }
       }
    }
    Si vous pouvez me dire ce qui cloche ?

    encore merci pour votre aide

    Cordialement Archigor

  3. #23
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Ma remarque précédente à propos de la syntaxe des noms de fichier concerne aussi le fichier $dat_folder
    La première erreur d'accès indique que tu n'as pas les droits sur le chemin précisé.
    A mon avis tu devrais prendre le temps d'apprendre avant de te lancer dans un script de ce type, là tu es en train de te faire un générateur de tâches de debug...

  4. #24
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    Il faut juste vérifier le nombre de fichiers à parser avant le traitement

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    $dat_folder = "$home\desktop"
    $destination = "$env:temp\lol"
     
    # attention manque système de verification de chemin, il faut le créer 
    set-location $dat_folder
     
     
    $part = '([^\|]+)' 
    $parts = ($part + '\|') * 14 + $part
     
    # creation de la ligne de texte ici vous êtes libre de réarranger comme bon vous semble
    $replc = '$1||$3||$5|$8|$9|$11|$12|$13|$14|$15'
     
     
    # je deteste les boucles while($true) et/ou les for draculas (;;)
    function loop {
       param([scriptblock]$scriptblock)
       while($true) { &$scriptblock }
    }
     
    function traitement([IO.FileInfo]$file) {
             $destPath = join-path $destination $file.Name
             $content = Get-Content -Path $file.fullname -ReadCount 1000 | foreach-object {  $_ -replace $parts,$replc }
             $content | out-file $destPath
             if(test-path $destpath)
             {
                 write-host "copie de $($file.fullname) -> $destpath"
                 # attention on supprime le fichier dat c'est une solution radicale mais si tu veux une autre approche tu peux rectifier le code
                 remove-item $file.fullname
             }
    }
     
    loop {
       if($datfile = get-item 'LDM_PC.BOESNER*.dat')
       {
          if(@($datfile).count -gt 1)
          {
              foreach($item in $datfile)
              {  
                   traitement $item
              }
          }
          else
          {
                  traitement $datfile
          }
       }
    }

Discussions similaires

  1. [VBA-E]Ecriture de données dans un fichier texte
    Par osito57 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 18/08/2017, 19h42
  2. Extraction de données dans un fichier texte en VB6 !
    Par rockroa dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/06/2006, 16h00
  3. Réponses: 2
    Dernier message: 16/01/2006, 19h34
  4. extraire certaines données d'un fichier texte
    Par davz88 dans le forum C++
    Réponses: 11
    Dernier message: 26/03/2005, 13h00
  5. Réponses: 3
    Dernier message: 22/02/2004, 20h09

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