Question Réunir plusieurs Scripts

Plus d'informations
il y a 6 ans 9 mois #28969 par karaaslan
Bonjour,

J'ai besoin d'aide pour développe un script.

J'ai besoin de réunir plusieurs scripts en un.

Exemple de script que j'ai besoin.
Etape par étape, ça fonctionne.

[code:1]
function New-ZipFile
{
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string]
[ValidateNotNullOrEmpty()]
$Name,

[Parameter(Mandatory=$true)]
[string]
[ValidateNotNullOrEmpty()]
$Source
)
[Reflection.Assembly]::LoadWithPartialName( \"System.IO.Compression.FileSystem\" )
$compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal
[System.IO.Compression.ZipFile]::CreateFromDirectory( $Source, $Name, $compressionLevel, $false )

Get-Item $Name
}

$name1 = Get-ChildItem -path \"C:\log\copie\" -name
$CheminFichier = 'C:\log\copie\fichier_recu.txt'

#Enleve l'extension .txt et copie dans le dossier\"copie\" sans l'extention
Copy-Item -Path \"C:\log\reception\fichier_recu.txt\" –Destination ([io.path]::ChangeExtension($CheminFichier, '')) -Verbose


#création d'un dossier avec le name du fichier \"$name1\"
New-Item -Path \"C:\log\dossier\" -Name \"$name1\" -ItemType \"directory\"


#rename le fichier.txt recus en index.txt
Rename-Item -Path \"C:\log\reception\fichier_recu.txt\" -NewName \"index.txt\"

#copie du fichier index.txt dans le dossier cree avec name \"$name1\"
Copy-Item \"C:\log\reception\index.txt\" -Destination C:\log\dossier\$name1 -Recurse

#ZIP le dossier \"$name1\"
New-ZipFile -Name C:\log\copie_zip\$name1.zip -Source \"C:\log\dossier\$name1\"
[/code:1]<br><br>Message édité par: birel, à: 29/05/19 15:49

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 ans 9 mois #28975 par Laurent Dardenne
Salut,
je n'ai pas compris ce que tu veux faire :pinch:

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 ans 9 mois #28982 par karaaslan
Réponse de karaaslan sur le sujet Re:Réunir plusieurs Scripts
Je t'explique

Je reçois un fichier X.txt, je récupérais le nom de mon fichier pour créer un dossier X

Je renomme mon fichier X.txt en index.txt

Puis je déplace mon fichier index.txt dans mon dossier X créés avec le nom de mon fichier x.Txt reçus

Enfin pour finir je zip le dossier X.

J'arrive avec différents scripts renommer, déplacement du fichier. zipper, ...

Mais, je n'arrive pas à faire l'ensemble des actions dans un script<br><br>Message édité par: birel, à: 3/06/19 14:30

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 ans 9 mois #28984 par Laurent Dardenne
Essai ceci:
[code:1]
&lt;#

Je reçois un fichier X.txt, je récupérais le nom de mon fichier pour créer un dossier X

Je renomme mon fichier X.txt en index.txt

Puis je déplace mon fichier index.txt dans mon dossier X créés avec le nom de mon fichier x.Txt reçus

Enfin pour finir je zip le dossier X.

J'arrive avec différents scripts renommer, déplacement du fichier. zipper, ...

Mais, je n'arrive pas à faire l'ensemble des actions dans un script
#&gt;

Function Traitement{
[CmdletBinding()]
param(
#Je reçois un fichier X.txt
[string] $InputFile,
[string] $LogPath=\&quot;c:\log\dossier\&quot;,
[string] $ZipPath='C:\log\copie_zip'
)

function New-ZipFile
{
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string]
[ValidateNotNullOrEmpty()]
$Name,

[Parameter(Mandatory=$true)]
[string]
[ValidateNotNullOrEmpty()]
$Source
)
[Reflection.Assembly]::LoadWithPartialName( \&quot;System.IO.Compression.FileSystem\&quot; ) &gt;$null
[System.IO.Compression.ZipFile]::CreateFromDirectory( $Source, $Name, 'Optimal', $false )

Get-Item $Name
}

$Verbose=$PSBoundParameters.ContainsKey('Verbose')

#Récupère des infos à partir d'un nom de fichier
$InfosInputFile=[System.IO.FileInfo]$InputFile

#je récupérais le nom de mon fichier pour créer un dossier X
$NomDeDossier=$InfosInputFile.BaseName

#création d'un dossier avec le name du fichier récupéré
New-Item -Path $LogPath -Name $NomDeDossier -ItemType \&quot;Directory\&quot; -verbose:$Verbose &gt;$null

$NouveauNom='Index.txt'
#todo : A vérifier si c'est dans le même répertoire ?
$NouveauNomComplet='{0}\{1}' -F $InfosInputFile.Directory, $NouveauNom

#Je renomme mon fichier X.txt en index.txt (todo : A vérifier si c'est dans le même répertoire ?)
Rename-Item -Path $InputFile -NewName $NouveauNom -verbose:$Verbose

$NouveauNomRepertoire=\&quot;$LogPath\$NomDeDossier\&quot;

#Puis je déplace mon fichier index.txt dans mon dossier X créés avec
#le nom de mon fichier x.Txt reçus
Copy-Item $NouveauNomComplet -Destination $NouveauNomRepertoire -verbose:$Verbose

#Enfin pour finir je zip le dossier X.
New-ZipFile -Name \&quot;$ZipPath\$NomDeDossier.zip\&quot; -Source $NouveauNomRepertoire -verbose:$Verbose
}

$FichiersTest='c:\temp\PremierEssai.txt'
'test' &gt; $FichiersTest
Remove-Item c:\temp\index.txt -ea SilentlyContinue

#dans mon cas
Traitement -InputFile $FichiersTest -LogPath 'c:\temp\Dossier' -ZipPath 'C:\temp\copie_zip' -Verbose

#dans ton cas
$Resultat=Traitement -InputFile $FichiersTest -Verbose
$Resultat
[/code:1]
Il te reste à coder la gestion d'erreur et les cas où le répertoire destination et fichier zip existe déjà.
Vérifie également les todo (questions en suspens).<br><br>Message édité par: Laurent Dardenne, à: 4/06/19 09:48

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 ans 9 mois #28987 par karaaslan
Réponse de karaaslan sur le sujet Re:Réunir plusieurs Scripts
Bonjour,

Merci beaucoup de ton aide

Il me crée un fichier PremierEssai.txt avec le contenu text

Mais dans mon cas si un fichier X_*.txt différent reçus tout les jours avec un contenue a pas modifier

Il est possible de faire une variable avec le nom du dossier $fichiername=X_*.txt et crée un dossier avec le nom X_* ?

Puis modifier le fichier X_*.txt reçu le renommé en index.txt sans modifier le contenue


Merci d'avance de ton retour
Je suis vraiment perdu :'(

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 6 ans 9 mois #28989 par Laurent Dardenne
birel écrit:

Mais dans mon cas si un fichier X_*.txt différent reçus tout les jours avec un contenue a pas modifier

Pour info, on propose les spécifications en une fois, pas au fur et à mesure :ohmy:
Idem, ici je ne suis pas sûr de comprendre ce que tu veux faire...
birel écrit:

Je suis vraiment perdu

Faut prendre le temps de réfléchir et d'énoncer ton traitement, ici il n'y a rien de complexe.
birel écrit:

Il est possible de faire une variable avec le nom du dossier $fichiername=X_*.txt et crée un dossier avec le nom X_* ?

Le mieux serait de partir du code que je t'ai proposé, si on mélanges les deux codes on est assuré de partir dans des incompréhensions :)

Ceci semble répondre à ta question, je me trompe ?
[code:1]

#je récupérais le nom de mon fichier pour créer un dossier X

$NomDeDossier=$InfosInputFile.BaseName
[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.063 secondes
Propulsé par Kunena