Powershell pour copier des fichiers sur le réseau
Essayez de copier des fichiers à partir du serveur local pour le partage de réseau comme le montre les images ci-dessous:
Dossier 1
Dossier 2
J'ai besoin pour atteindre est de copier tout le contenu de la RACINE d'un sous-dossier SOURCE vers un dossier de DESTINATION. Mais à chaque fois il copie le contenu, je le voudrais pour créer un nouveau dossier avec le même nom du dossier de destination, mais suffixé avec une sorte de numérotation séquentielle. Le nombre de dossiers & fichiers à l'intérieur de la SOURCE/dossier RACINE reste toujours le même (2 dossiers & 2 fichiers). J'ai juste besoin de toutes ces contenu de la source d'aller dans un nouveau dossier sur la destination à chaque fois que je lance le script. Voici un exemple de script que j'ai essayé, mais c'est simplement de ne pas faire ce dont j'ai besoin:
$date = Get-Date -format MMMM-dd-yyyy
$date2 = Get-Date -format yyyyMMdd
$Source = "C:\SOURCE\ROOT"
$Destination1 = "\\netshare\DESTINATION\DATA_May-26-2014"
$Destination2 = "\\netshare\DESTINATION\DATA_May-26-2014-1st"
$Destination3 = "\\netshare\DESTINATION\DATA_May-26-2014-2nd"
$Destination4 = "\\netshare\DESTINATION\DATA_May-26-2014-3rd"
$Destination5 = "\\netshare\DESTINATION\DATA_May-26-2014-4th"
$Destination6 = "\\netshare\DESTINATION\DATA_May-26-2014-5th"
#Check destination path
if (Test-Path $Destination1)
{
#then copy
robocopy $Source $Destination2 /MIR /Z /E /fft /MAXAGE:$date2
}
if (Test-Path $Destination2)
{
#then copy
robocopy $Source $Destination3 /MIR /Z /E /fft /MAXAGE:$date2
}
if (Test-Path $Destination3)
{
#then copy
robocopy $Source $Destination4 /MIR /Z /E /fft /MAXAGE:$date2
}
if (Test-Path $Destination4)
{
#then copy
robocopy $Source $Destination5 /MIR /Z /E /fft /MAXAGE:$date2
}
if (Test-Path $Destination5)
{
#then copy
robocopy $Source $Destination6 /MIR /Z /E /fft /MAXAGE:$date2
}
else
{
robocopy $Source $Destination1 /MIR /Z /E /fft /MAXAGE:$date2
}
Au départ, j'étais avec robocopy seulement pour un but similaire, mais cette copie du projet de besoin le dossier pour avoir le nom du mois avec elle (comme dans "Mai") qui n'était pas disponible avec robocopy et j'ai donc dû passer au script powershell et de combiner robocopy.
Des idées sur comment je peut créer un meilleur scénario?
OriginalL'auteur user3679127 | 2014-05-27
Vous devez vous connecter pour publier un commentaire.
Utiliser La Copie De L'Élément. Robocopy serait cool si tu faisais un vrai miroir, dans mon expérience, à l'aide de la copie de l'élément est mieux pour la plupart des cas en PowerShell. Si vous voulez un nom unique de créer un TimeStamp variable et le passer à la fin, ou similaire.
Aussi, si vous restez avec RoboCopy, vous aurez besoin de vérifier pour la sortie de niveau en cours d'exécution à l'intérieur de certains autres outils(comme TeamCity).
Crée un véritable code d'erreur basé sur le niveau d'erreur. Qui pour RoboCopy, ErrorLevel 1 signifie en fait le succès, de 0 signifie qu'aucun changement.
Se sentir libre pour marquer ma réponse que la réponse si il résolu votre problème, content d'avoir pu aider. J'ai surtout utiliser powershell ces jours-ci sur windows. Cependant, j'ai encore nous ROBOCOPY moi-même parfois, surtout pour le /MIR commutateur.
OriginalL'auteur Jason Hughes