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 :

Copier un fichierB à partir du nombre de ligne d'un autre fichierA


Sujet :

Scripts/Batch

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Copier un fichierB à partir du nombre de ligne d'un autre fichierA
    Salut,
    Le but de mon script est de copier un fichier en tenant comte du nombre de lignes d'un fichier précédent.

    Exemple:
    J'ai un fichier A

    Fichier A
    Azerty
    Aztyui
    Aqswx
    Bngtui
    Le fichier A contient 4 lignes

    J'ai un autre fichier(qui est un texte)


    Fichier B
    "L'utilisation d'instructions structurées comme des phrases permet de mémoriser plus simplement un grand nombre de commandes. Cette facilité est toutefois limitée, car elle s'applique uniquement aux personnes qui possèdent un minimum de vocabulaire anglais."(Texte pris sur Wikipedia)
    Le but est de modifier le contenu du Fichier B (par exemple "simplement","facilité") puis de copier le Fichier B 4 fois (nombre de lignes du Fichier A)


    Voici un exemple de mon script.
    Qui réussit à copier un fichier par le nombre de ligne du Fichier A par contre la copie du contenu et le changement des variables restent un casse tête.

    PS : Je suis nouveau en programmation et à vrai dire c'est mon premier véritable script

    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
    #Compte le nombre de lignes dans le Fichier A 
    write-host = "Ecrivez le fichier à compter"
    $FichierA = read-host
    $measure = Get-Content $FichierA 
    $lines = ($measure | Where-Object {$_ -ne ""}).Count
    echo "line count is: ${lines}"
    write-host = "Ecrivez le fichier à copier"
    $FichierB = read-host
    write-host = "Ecrivez les variables à ajouter"
    $Variable1 = read-host
    $Variable2 = read-host
     
    gc -path $FichierB | foreach {$_ -replace "simplement", "$Variable1 "}
    gc -path $FichierB | foreach {$_ -replace "facilité", "$Variable2"}
     
    $idmax = $lines # nombre maximun de sauvegarde (de 1 à $lines)
    $Source = "$env:H:\"
    #$destination = "H:\cript\$env:UserName"
    $destination = "H:\cripts\Sauvegardes\$env:UserName"
     
    # a la premiere execution du script création des repertoires sauvegardes
    1..$idmax | ForEach-Object {
        If (-not (Test-Path "$destination\Sauvegarde$_") -and -not (Test-Path "$destination\_Sauvegarde$_")) {
            new-Item -ItemType directory -Path "$destination\Sauvegarde$_" | new-Item -ItemType file -Path "$destination\Sauvegarde$_\FichierB$_.txt"
            Write-Host "----> Sauvegarde $_ cree" -ForegroundColor Green   
            }
        }

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Même si je ne comprend pas le but je te propose ceci.
    J'ai simplifié $FichierA et $FichierB pour les tests

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    $FichierA = "inputLine.txt"
    $FichierB = "inputData.txt"
     
     
    # Compte le nombre de ligne de $FichierA
    $CountLine = (Get-Content -Path $FichierA | Where-Object {$_ -ne ""}).Count
     
     
    # Questionne sur les remplacements à effectuer
     
    # Tableau qui va nous servir à stocker les remplacements
    $replacements = @()
     
    # Boucle infini
    while($true)
    {
        $find = read-host -Prompt "Texte à chercher (vide pour passer)"
        # Si entré vide on quitte la boucle
        if ($find -eq "")
        {
            break
        }
     
        $replace = read-host -Prompt "Texte à remplacer (vide pour passer)"
        # Si entré vide on quitte la boucle
        if ($replace -eq "")
        {
            break
        }
     
        # On stock dans notre tableau les remplacements
        $replacements += , @($find, $replace)
     
        Write-Host ""
    }
     
     
    # Lit le contenu de $FichierB
    $content = Get-Content -Path $FichierB
     
     
    # Effectue les remplacements nécessaire
    foreach($replacement in $replacements)
    {
        $content = $content -replace $replacement[0], $replacement[1]
    }
     
     
    # Effectue les sauvegardes
    $destination = ".\Sauvegardes\$env:UserName"
    $filename = (Get-Item -Path $FichierB).PSChildName
     
    # Autant de fois qu'il y a de ligne non vide dans $FichierA
    For ($i = 1; $i -le $CountLine; $i++)
    {
        # Créer le dossier de destination si il n'existe pas
        if (-not (Test-Path -Path "$destination\Sauvegarde$i" -PathType Container))
        {
            new-Item -ItemType directory -Path "$destination\Sauvegarde$i" | Out-Null
        }
        # Créer le fichier modifié
        Set-Content -Path "$destination\Sauvegarde$i\$filename" -Value $content
    }

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/03/2013, 17h47
  2. Réponses: 4
    Dernier message: 22/02/2012, 14h10
  3. [XL-2007] Auto Fill a partir du nombre de lignes dans une feuille différente
    Par kikijoli dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/08/2011, 10h57
  4. Etirer une formule suivant le nombre de ligne d'une autre feuille
    Par S l i d e dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/08/2007, 23h45
  5. Réponses: 7
    Dernier message: 03/01/2006, 21h59

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