Le renommer après copiés à l'aide de powershell
Je suis en train récursive de copier les fichiers et de les renommer.
Mes dossiers de fichiers avec le même nom ,donc j'ai besoin de renommer le moment, il est copié.
Mais je suis continuer de faire face au problème. Voici mon code. Il doit trouver le CopyForBuild.fichier de chauve-souris et le copier à E:\CopyForBuild dossier. Une fois qu'il est copié , le premier fichier doit être Copyforbuild1.txt le deuxième sera CopyforBuild2.txt et ainsi de suite.
Voici mon code. Où suis-je en train d'échouer?
$File = Get-ChildItem -Path V:\MyFolder -Filter CopyForbuild.bat -Recurse
$i=1
Foreach ($f in $File)
{
Copy-Item $f "E:\copyforbuild\"
Rename-Item -path "E:\Copyforbuild\"+"$f" -newname "CopyForbuild"+"$i"+".txt"
$i = $i+1
}
OriginalL'auteur Samselvaprabu | 2011-12-30
Vous devez vous connecter pour publier un commentaire.
Vous pouvez renommer le fichier en cours de copie en Copie-Élément, il suffit de fournir chemin d'accès complet dans les deux endroits:
Cela permettra de renommer 1.config à 2.config. Pas besoin de faire appel distinct fonction renommer.
Votre code doit maintenant ressembler à ceci:
Vous pouvez la rendre encore plus court si l'utilisation De la boucle:
Ou de façon plus courte et plus large si le suivi de Richard commentaire
Get-ChildItem -Path V:\MyFolder -filt CoptForBuild.bat -rec | Copy-Item -dest {"E:\copyforbuild\" + $_.BaseName + ($i++) +".txt" }
. (Les applets de commande avec des paramètres qui ne prennent pas le type de l'objet, commeCopy-Item
destination, ont une fonction intégrée pour chacun, en utilisant des accolades, donc il n'est pas nécessaire pour une boucle de déterminer la destination.)Copain, Elle lève une exception. "Copier-Élément : Ne peut pas lier argument pour le paramètre 'Chemin', parce que c'est nul." $Fichier ne contient pas d'éléments lors de spécifier "."
$Fichier = Get-ChildItem -Chemin "V:\MyFolder\*.*" -Filtre CopyForbuild.bat-Recurse $i=1 Foreach ($f $Fichier) { Copie de l'Élément de $f.FullName ("E:\copyforbuild\" + $f.BaseName + $i +".txt") $i++ }
Quand je suis en retrait "." , il fonctionne. (C'est la façon dont richard a également écrit )
Cela fait, vous pouvez également supprimer des commentaires non pertinents
OriginalL'auteur Andrey Marchuk