Question
RESOLU :Problème boucle robocopy
- Franck B-A
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 28
- Remerciements reçus 0
il y a 12 ans 6 mois #15751
par Franck B-A
Réponse de Franck B-A sur le sujet Re:Problème boucle robocopy
Alors voilà:
j'ai fini par contourner le problème (je sais pas si c'est bien ...)
le script (pas final) passe de la tartine indigeste à
[code:1]
############################
#Fonction de la sélection du répertoire contenant les profils utilisateurs
###########################
$message = \"sélection du répertoire contenant les profils utilisateurs \"
$title = \"Profils APH\"
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
$CONTAPH = [Microsoft.VisualBasic.Interaction]::InputBox(\"$message\", \"$title\" )
###########################
#Export et split des APH suivant les unités (fin des APH = 0,1...m ou g)
###########################
Get-ChildItem \"$CONTAPH\" | select-object Name | sort-object Name | Export-CSV \"C:\temp\ContAPH.csv\" -NoTypeInformation -delimiter \";\" -Encoding Unicode
###########################
#Lancement ROBOCOPY
###########################
$MigAPH0 = Get-ChildItem \"$CONTAPH\" | Where-Object {$_.Name -like \"*0\"}
foreach ($homes in $MigAPH0)
{
$RepCible = \"C:\temp\Migration\copie\"
robocopy \"$CONTAPH\$homes\" \"$RepCible\0\$homes\" /E /COPY:«»DAT /NP /LOG:\"C:\Temp\Rob_logAPH0.log\" /TEE /ZB /R:5 /W:5
}
$MigAPH1 = Get-ChildItem \"$CONTAPH\" | Where-Object {$_.Name -like \"*1\"}
foreach ($homes in $MigAPH1)
{
$RepCible = \"C:\temp\Migration\copie\"
robocopy \"$CONTAPH\$homes\" \"$RepCible\1\$homes\" /E /COPY:«»DAT /NP /LOG:\"C:\Temp\Rob_logAPH0.log\" /TEE /ZB /R:5 /W:5
}
$MigAPHm = Get-ChildItem \"$CONTAPH\" | Where-Object {$_.Name -like \"m-*\"}
foreach ($homes in $MigAPHm)
{
$RepCible = \"C:\temp\Migration\copie\"
robocopy \"$CONTAPH\$homes\" \"$RepCible\m\$homes\" /E /COPY:«»DAT /NP /LOG:\"C:\Temp\Rob_logAPH0.log\" /TEE /ZB /R:5 /W:5
}
$MigAPHg = Get-ChildItem \"$CONTAPH\" | Where-Object {$_.Name -like \"g-*\"}
foreach ($homes in $MigAPHg)
{
$RepCible = \"C:\temp\Migration\copie\"
robocopy \"$CONTAPH\$homes\" \"$RepCible\g\$homes\" /E /COPY:«»DAT /NP /LOG:\"C:\Temp\Rob_logAPH0.log\" /TEE /ZB /R:5 /W:5
}
[/code:1]
Bon il est pas fini mais je le trouve beaucoup mieux ^^<br><br>Message édité par: bigkifran, à: 27/08/13 16:55
j'ai fini par contourner le problème (je sais pas si c'est bien ...)
le script (pas final) passe de la tartine indigeste à
[code:1]
############################
#Fonction de la sélection du répertoire contenant les profils utilisateurs
###########################
$message = \"sélection du répertoire contenant les profils utilisateurs \"
$title = \"Profils APH\"
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
$CONTAPH = [Microsoft.VisualBasic.Interaction]::InputBox(\"$message\", \"$title\" )
###########################
#Export et split des APH suivant les unités (fin des APH = 0,1...m ou g)
###########################
Get-ChildItem \"$CONTAPH\" | select-object Name | sort-object Name | Export-CSV \"C:\temp\ContAPH.csv\" -NoTypeInformation -delimiter \";\" -Encoding Unicode
###########################
#Lancement ROBOCOPY
###########################
$MigAPH0 = Get-ChildItem \"$CONTAPH\" | Where-Object {$_.Name -like \"*0\"}
foreach ($homes in $MigAPH0)
{
$RepCible = \"C:\temp\Migration\copie\"
robocopy \"$CONTAPH\$homes\" \"$RepCible\0\$homes\" /E /COPY:«»DAT /NP /LOG:\"C:\Temp\Rob_logAPH0.log\" /TEE /ZB /R:5 /W:5
}
$MigAPH1 = Get-ChildItem \"$CONTAPH\" | Where-Object {$_.Name -like \"*1\"}
foreach ($homes in $MigAPH1)
{
$RepCible = \"C:\temp\Migration\copie\"
robocopy \"$CONTAPH\$homes\" \"$RepCible\1\$homes\" /E /COPY:«»DAT /NP /LOG:\"C:\Temp\Rob_logAPH0.log\" /TEE /ZB /R:5 /W:5
}
$MigAPHm = Get-ChildItem \"$CONTAPH\" | Where-Object {$_.Name -like \"m-*\"}
foreach ($homes in $MigAPHm)
{
$RepCible = \"C:\temp\Migration\copie\"
robocopy \"$CONTAPH\$homes\" \"$RepCible\m\$homes\" /E /COPY:«»DAT /NP /LOG:\"C:\Temp\Rob_logAPH0.log\" /TEE /ZB /R:5 /W:5
}
$MigAPHg = Get-ChildItem \"$CONTAPH\" | Where-Object {$_.Name -like \"g-*\"}
foreach ($homes in $MigAPHg)
{
$RepCible = \"C:\temp\Migration\copie\"
robocopy \"$CONTAPH\$homes\" \"$RepCible\g\$homes\" /E /COPY:«»DAT /NP /LOG:\"C:\Temp\Rob_logAPH0.log\" /TEE /ZB /R:5 /W:5
}
[/code:1]
Bon il est pas fini mais je le trouve beaucoup mieux ^^<br><br>Message édité par: bigkifran, à: 27/08/13 16:55
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 12 ans 6 mois #15752
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Procblème boucle robocopy
Bonjour,
Laurent Dardenne écrit:
Un exemple :
[code:1]
$RobocopyLogFile = \"D:\Robocopy.log\"
$CommandLine = \"robocopy $SourceLocation $DestinationLocation *.* /Copyall /R:3 /W:3 /NP /ETA \"
Write-Host \"Exécution de '$CommandLine'\"
$CaptureOutput = Invoke-Expression -Command $CommandLine
$CaptureOutput | Out-File $RobocopyLogFile -append
# Contrôle si une erreur a eu lieu lors du Robocopy
$Isfailure = ($CaptureOutput -match \"ERROR :\"«») -or ($CaptureOutput -match \"ERREUR :\"«»)
if ($Isfailure){
Write-Error \"Une erreur s'est produite lors du Robocopy. Merci de voir le contenu du log '$RobocopyLogFile'\"
}
else{
Write-Host \"la copie est OK\"
}
[/code:1]
Aussi, utiliser la variable '$LastExitCode' puisqu'il s'agit de l'exécution d'un programme externe.
@ +
Matthew BETTON
Laurent Dardenne écrit:
Salut,
un détail en passant, il n'y a pas de gestion du code retour de Robocopy...
Un exemple :
[code:1]
$RobocopyLogFile = \"D:\Robocopy.log\"
$CommandLine = \"robocopy $SourceLocation $DestinationLocation *.* /Copyall /R:3 /W:3 /NP /ETA \"
Write-Host \"Exécution de '$CommandLine'\"
$CaptureOutput = Invoke-Expression -Command $CommandLine
$CaptureOutput | Out-File $RobocopyLogFile -append
# Contrôle si une erreur a eu lieu lors du Robocopy
$Isfailure = ($CaptureOutput -match \"ERROR :\"«») -or ($CaptureOutput -match \"ERREUR :\"«»)
if ($Isfailure){
Write-Error \"Une erreur s'est produite lors du Robocopy. Merci de voir le contenu du log '$RobocopyLogFile'\"
}
else{
Write-Host \"la copie est OK\"
}
[/code:1]
Aussi, utiliser la variable '$LastExitCode' puisqu'il s'agit de l'exécution d'un programme externe.
@ +
Matthew BETTON
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 6 mois #15753
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Problème boucle robocopy
bigkifran écrit:
Tu peux encore factoriser, ainsi tu passerais de la tartine à la biscotte
Il faut juste savoir, je ne connais pas les options de robocopy par cœur, si le fichier de log est complété ou écrasé à chaque appel.
+1Bon il est pas fini mais je le trouve beaucoup mieux
Tu peux encore factoriser, ainsi tu passerais de la tartine à la biscotte
Il faut juste savoir, je ne connais pas les options de robocopy par cœur, si le fichier de log est complété ou écrasé à chaque appel.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 12 ans 6 mois #15756
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Problème boucle robocopy
Laurent Dardenne écrit:
Pour ajouter au log déjà existant (append) :
[code:1]
/LOG+:\"C:\Temp\Rob_logAPH0.log\"
[/code:1]
le petit 'plus' qui va bien
<br><br>Message édité par: Matthew BETTON, à: 27/08/13 18:18
Il faut juste savoir, je ne connais pas les options de robocopy par cœur, si le fichier de log est complété ou écrasé à chaque appel.
Pour ajouter au log déjà existant (append) :
[code:1]
/LOG+:\"C:\Temp\Rob_logAPH0.log\"
[/code:1]
le petit 'plus' qui va bien
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 6 mois #15758
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Problème boucle robocopy
Matthew BETTON écrit:
Hé oui, le dev seul c'est bien, à deux c'est mieux et à plusieurs c'est bien meilleur
ça c'est du travail d'équipe !le petit 'plus' qui va bien :
Hé oui, le dev seul c'est bien, à deux c'est mieux et à plusieurs c'est bien meilleur
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Franck B-A
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 28
- Remerciements reçus 0
il y a 12 ans 6 mois #15760
par Franck B-A
Réponse de Franck B-A sur le sujet Re:Problème boucle robocopy
Je ne peux que plussoyer ^^
Je vais donc essayer de \"factoriser\" et je vais incrémenter le log.
ça je sais faire ^^ mais comme je voulais un log par unité ce qui finalement est limite une aberration ...
Merci encore pour votre aide !
je vous tiens au café
Je vais donc essayer de \"factoriser\" et je vais incrémenter le log.
ça je sais faire ^^ mais comme je voulais un log par unité ce qui finalement est limite une aberration ...
Merci encore pour votre aide !
je vous tiens au café
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.100 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- RESOLU :Problème boucle robocopy