Question
Simple Fonction de copie qui "bug"
- Fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 11 ans 2 mois #19207
par Fabien
Simple Fonction de copie qui "bug" a été créé par Fabien
Bonjour,
J'essaye désespérément de faire une simple fonction de copie d'un dossier vers un autre avec en paramètre la source et la destination et qui compte également tous les fichiers et les dossiers copiés dans la destination.
Je pensais que ce serait simple, mais apparemment non.
Voici mon bout de code en test:
[code:1]
Copie ('C:\TEST', 'E:\NomPc\SVG\')
$TotalFiles
$TotalFolder
function Copie
{
param([string]$Source, [string]$Destination)
Copy-Item $Source $Destination -Force -Recurse
$Total= GCI $Destination -Recurse -Force
foreach ($File in $Total){
if(!$File.Directory){
$TotalFiles+=1
}
Else
{
$TotalFolder+=1
}
}
}
[/code:1]
Il me renvoi le message d'erreur suivant:
\"Copy-Item : Impossible de trouver le chemin d'accès «C:\TEST E:\NomPc\SVG\»,
car il n'existe pas.\"
Il associe le chemin source et destination dans la variable $Source...pourquoi?
J'ai l'impression que l'ISE est un peu instable.
Des fois il me met aussi cette erreur:
\"GCI : L'accès au chemin d'accès 'C:\Windows\system32\LogFiles\WMI\RtBackup' est
refusé.\"
Mais c'est pas systématique.
En plus je viens de me rendre compte qu'il y a déjà 2 dossiers vide dans ma \"destination\" qui est déjà créée, et ma fonction me retourne 0 de $totalfiles (normal) et 0 de $totalfolder (pas normal vu qu'il y en à 2.<br><br>Message édité par: Bylliboy, à: 5/03/15 23:57
J'essaye désespérément de faire une simple fonction de copie d'un dossier vers un autre avec en paramètre la source et la destination et qui compte également tous les fichiers et les dossiers copiés dans la destination.
Je pensais que ce serait simple, mais apparemment non.
Voici mon bout de code en test:
[code:1]
Copie ('C:\TEST', 'E:\NomPc\SVG\')
$TotalFiles
$TotalFolder
function Copie
{
param([string]$Source, [string]$Destination)
Copy-Item $Source $Destination -Force -Recurse
$Total= GCI $Destination -Recurse -Force
foreach ($File in $Total){
if(!$File.Directory){
$TotalFiles+=1
}
Else
{
$TotalFolder+=1
}
}
}
[/code:1]
Il me renvoi le message d'erreur suivant:
\"Copy-Item : Impossible de trouver le chemin d'accès «C:\TEST E:\NomPc\SVG\»,
car il n'existe pas.\"
Il associe le chemin source et destination dans la variable $Source...pourquoi?
J'ai l'impression que l'ISE est un peu instable.
Des fois il me met aussi cette erreur:
\"GCI : L'accès au chemin d'accès 'C:\Windows\system32\LogFiles\WMI\RtBackup' est
refusé.\"
Mais c'est pas systématique.
En plus je viens de me rendre compte qu'il y a déjà 2 dossiers vide dans ma \"destination\" qui est déjà créée, et ma fonction me retourne 0 de $totalfiles (normal) et 0 de $totalfolder (pas normal vu qu'il y en à 2.<br><br>Message édité par: Bylliboy, à: 5/03/15 23:57
Connexion ou Créer un compte pour participer à la conversation.
- Fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 11 ans 2 mois #19208
par Fabien
Réponse de Fabien sur le sujet Re:Simple Fonction de copie qui \"bug\"
Quelqu'un aurait il un autre exemple de fonction qui copie une source dans une destination et qui en même temps permet de compter le nombre de fichiers (pour alimenter une future ProgressBar) et le nombre de dossiers.
Connexion ou Créer un compte pour participer à la conversation.
- Fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 11 ans 2 mois #19214
par Fabien
Réponse de Fabien sur le sujet Re:Simple Fonction de copie qui \"bug\"
Up!
Personne pour répondre?
Personne pour répondre?
Connexion ou Créer un compte pour participer à la conversation.
- Fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 11 ans 2 mois #19239
par Fabien
Réponse de Fabien sur le sujet Re:Simple Fonction de copie qui \"bug\"
Bon...
Personne ne sait pourquoi PS lit \"C:TEST E:NomPcSVG\" au lieu de \"C:\TEST\"?
Il y a pourtant bien la virgule qui sépare le chemin source et le chemin destination.
Personne ne sait pourquoi PS lit \"C:TEST E:NomPcSVG\" au lieu de \"C:\TEST\"?
Il y a pourtant bien la virgule qui sépare le chemin source et le chemin destination.
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 11 ans 2 mois #19240
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Simple Fonction de copie qui
Bylliboy écrit:
Ne pas hésiter à insérer du code de debug pour comprendre certains principes de base de Powershell :
[code:1]
#Avec des paramètres typés
function Copie {
param([string]$Source, [string]$Destination)
$Source.GetType()
Write-Host \"Source=$Source\"
$Destination.GetType()
Write-Host \"Destination=$Destination\"
}
Copie ('C:\TEST', 'E:\NomPc\SVG\')
# IsPublic IsSerial Name BaseType
#
----
# True True String System.Object
# Source=C:\TEST E:\NomPc\SVG\
# True True String System.Object
# Destination=
#Avec des paramètres sans type
function Copie {
param($Source, $Destination)
$Source.GetType()
Write-Host \"Source=$Source\"
$Destination.GetType()
Write-Host \"Destination=$Destination\"
}
Copie ('C:\TEST', 'E:\NomPc\SVG\')
[/code:1]
Savoir, et ne pas oublier, que l'argument d'un paramètre d'une fonction ou d'un cmdlet peut être transformé.
Cette supposition est une erreur.Il y a pourtant bien la virgule qui sépare le chemin source et le chemin destination.
Ne pas hésiter à insérer du code de debug pour comprendre certains principes de base de Powershell :
[code:1]
#Avec des paramètres typés
function Copie {
param([string]$Source, [string]$Destination)
$Source.GetType()
Write-Host \"Source=$Source\"
$Destination.GetType()
Write-Host \"Destination=$Destination\"
}
Copie ('C:\TEST', 'E:\NomPc\SVG\')
# IsPublic IsSerial Name BaseType
#
----
# True True String System.Object
# Source=C:\TEST E:\NomPc\SVG\
# True True String System.Object
# Destination=
#Avec des paramètres sans type
function Copie {
param($Source, $Destination)
$Source.GetType()
Write-Host \"Source=$Source\"
$Destination.GetType()
Write-Host \"Destination=$Destination\"
}
Copie ('C:\TEST', 'E:\NomPc\SVG\')
[/code:1]
Savoir, et ne pas oublier, que l'argument d'un paramètre d'une fonction ou d'un cmdlet peut être transformé.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 11 ans 2 mois #19246
par Fabien
Réponse de Fabien sur le sujet Re:Simple Fonction de copie qui
Je comprends pas,
il faudrait que je change le type de la variable?
Mes 2 arguments sont des chemin donc chaîne de caractère donc de type string.
Dans les bouquins ou tutos pour déclarer des arguments qui sont des chemins les paramètres sont déclarés comme je l'ai fais, sauf que pour moi ça marche pas vu qu'il mélange les 2 arguments comme s'il n'y avait pas de virgule.
Je voudrais juste qu'on m'explique où est mon erreur.
au passage les 2 fonctions avec le \"[string]\" montre un type différent certes mais au final le résultat est le même, ma variable $Destination est vide.<br><br>Message édité par: Bylliboy, à: 11/03/15 22:49
il faudrait que je change le type de la variable?
Mes 2 arguments sont des chemin donc chaîne de caractère donc de type string.
Dans les bouquins ou tutos pour déclarer des arguments qui sont des chemins les paramètres sont déclarés comme je l'ai fais, sauf que pour moi ça marche pas vu qu'il mélange les 2 arguments comme s'il n'y avait pas de virgule.
Je voudrais juste qu'on m'explique où est mon erreur.
au passage les 2 fonctions avec le \"[string]\" montre un type différent certes mais au final le résultat est le même, ma variable $Destination est vide.<br><br>Message édité par: Bylliboy, à: 11/03/15 22:49
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.042 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Simple Fonction de copie qui "bug"