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 :

Petit script Batch que je voudrais passé en PowerShell [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 88
    Par défaut Petit script Batch que je voudrais passé en PowerShell
    Bonjour,

    Voici une portion d'un script batch qui me permet de remplacer des chaines de caractères dans un fichier de configuration. Mon souci, c'est que mon fichier de base est en UTF16LE et que mon fichier de sortie est en UTF8. Je n'ai pas réussit à trouvé de solution pour qu'il soit en UTF16LE.

    Si j'ai bien compris en PowerBatch c'est faisable.

    J'aimerais refaire en power batch ce script et je ferais un appel de cette fonction dans mon batch.

    Voici le script en question:

    Code batch : 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
     
     
    @echo off
    cls
     
    setlocal enableextensions enabledelayedexpansion
     
    title %0 Script 
     
    call:searchAndReplace "C:\cbEngine.ini" dudu "toto" "C:\cbEngine.ini2"
     
    pause
    exit
     
    :searchAndReplace
    REM Si le fichier de sortie existe, on l'efface
    if exist %4 del %4
    REM On remplace les chaines de caractères CHAINE par les chaines NEW_CHAINE
    for /f "delims=" %%a in ('CMD /U /C type %1') do (
    	set $ligne=%%a
    	set $ligne=!$ligne:%2=%3!
    	set $ligne=!$ligne:"=!
    	echo !$ligne!>>%4
    )
    goto:eof

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 88
    Par défaut
    Bon j'ai essayé d'avancé sur le script mais je bloque pour executer le script sans passé par la console

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    set-executionpolicy unrestricted
     
    $content = Get-Content ".\cbEngine.ini" | foreach { $_ -replace "dudu","dada" } 
    Set-Content -Path ".\cbEngine2.ini" -Value $content
     
    Write-Host "Press any key to continue ..."
    $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

  3. #3
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Bonjour à toi,

    Je ne comprends ton truc de :
    mais je bloque pour executer le script sans passé par la console
    Tu met ton script dans un fichier .ps1 et tu le lance avec :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    powershell.exe -ExecutionPolicy ByPass -File monscript.ps1

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 88
    Par défaut
    Merci, C'est exactement ce que je cherchais!
    Je voulais dire, sans passé par la commande à la manuel...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 88
    Par défaut
    Zutte mon fichier de sortie est encore en UTF8, arf je vais avoir besoin d'un coup de main!


    Voilà ce que j'ai fais:

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    @echo off
    cls
     
    powershell.exe -ExecutionPolicy ByPass -File searchAndReplace.ps1
     
    pause 
     
    exit


    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $content = Get-Content ".\cbEngine.ini" | foreach { $_ -replace "dudu","dada" } 
    Set-Content -Path ".\cbEngine.ini" -Value $content
     
    Write-Host "Press any key to continue ..."
    $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 88
    Par défaut
    Yes! ça marche!

    Merci pour votre aide!

    Ma solution: -encoding Unicode

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set-Content -Path ".\cbEngine2.ini" -Value $content -encoding Unicode

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 88
    Par défaut
    Il me reste une petite question comment je fais pour recupérer la valeur d'une variable située dans mon .bat pour l'utiliser dans mon fichier powershell?

  8. #8
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Tu la passe en argument à ton Powershell
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo off
    set mavar="toto"
     
    powershell.exe -ExecutionPolicy ByPass -File searchAndReplace.ps1 -MaVar %mavar%
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Param($MaVar)
    Write-Host $MaVar
    Le nommage n'est pas obligatoire mais j'aime quand c'est propre et clair

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 88
    Par défaut
    C bon ça et en plus j'ai du bonus!


  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 88
    Par défaut
    Arf surement la fatigue, powershell ne prend pas le bonus "Param"
    et Write-Host $A vide

    Je suis sur windows 7 pro 64bits

    batch
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @echo off
    cls
     
    set VALEURA=dudu
    set VALEURB=toto
     
    powershell.exe -ExecutionPolicy ByPass -File searchAndReplace.ps1 -A %VALEURA% -B %VALEURB%
     
    pause 
     
    exit


    powershell
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Write-Host "resultat:"
    Write-Host $A
    Write-Host $B
     
    $content = Get-Content ".\cbEngine.ini" | foreach { $_ -replace $A, $B } 
    Set-Content -Path ".\cbEngine2.ini" -Value $content -encoding Unicode
     
    Write-Host "Press any key to continue ..."
    $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 105
    Par défaut
    Bonjour,

    Oui, c'est normal, tu n'as pas écrit l'instruction "param()" au début de ton script.
    Cette instruction permet de spécifier les paramètres qui seront traités par ton script.

    Tu trouveras dans l'article suivant, des liens vers la documentation et un exemple d'utilisation:

    Salutations.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 88
    Par défaut
    Oui en effet, il fallait que je mette mes 2 variables dans le même param() moi je mettais 2 fois param() pour chaque variable.

    Tout fonctionne!

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    param($A,$B)
     
    Write-Host "resultat:"
    Write-Host $A
    Write-Host $B
     
    $content = Get-Content ".\cbEngine.ini" | foreach { $_ -replace $A, $B } 
    Set-Content -Path ".\cbEngine2.ini" -Value $content -encoding Unicode

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

Discussions similaires

  1. Archive et mot de passe dans un script batch
    Par 91300 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 28/02/2016, 22h09
  2. Petite erreur script batch
    Par LOBO1986 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 09/01/2011, 04h12
  3. [batch] petit script très simple, help
    Par zeguzz dans le forum Windows
    Réponses: 2
    Dernier message: 11/10/2006, 00h42
  4. (Batch et VBS) Petit probléme avec un script batch VBS
    Par Edoxituz dans le forum Windows
    Réponses: 11
    Dernier message: 27/02/2006, 17h21
  5. Réponses: 1
    Dernier message: 15/02/2006, 11h49

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