Question Simple Fonction de copie qui "bug"

Plus d'informations
il y a 11 ans 2 mois #19207 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 \&quot;destination\&quot; 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.

Plus d'informations
il y a 11 ans 2 mois #19208 par Fabien
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.

Plus d'informations
il y a 11 ans 2 mois #19214 par Fabien
Up!

Personne pour répondre?

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

Plus d'informations
il y a 11 ans 2 mois #19239 par Fabien
Bon...
Personne ne sait pourquoi PS lit \&quot;C:TEST E:NomPcSVG\&quot; au lieu de \&quot;C:\TEST\&quot;?
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.

Plus d'informations
il y a 11 ans 2 mois #19240 par xyz
Réponse de xyz sur le sujet Re:Simple Fonction de copie qui
Bylliboy écrit:

Il y a pourtant bien la virgule qui sépare le chemin source et le chemin destination.

Cette supposition est une erreur.

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 \&quot;Source=$Source\&quot;
$Destination.GetType()
Write-Host \&quot;Destination=$Destination\&quot;
}

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 \&quot;Source=$Source\&quot;
$Destination.GetType()
Write-Host \&quot;Destination=$Destination\&quot;
}
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.

Plus d'informations
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 \&quot;[string]\&quot; 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
Propulsé par Kunena