Estoy tratando de copiar recursivamente los archivos y cambiarles el nombre.Renombrarlo después de copiarlo con powershell
Mis carpetas tiene un archivo con el mismo nombre, así que necesito cambiarle el nombre en el momento en que se copia.
Pero sigo teniendo problemas. El siguiente es mi código. Debería encontrar el archivo CopyForBuild.bat y copiarlo en la carpeta E: \ CopyForBuild. Una vez copiado, el primer archivo debe ser Copyforbuild1.txt, el segundo será CopyforBuild2.txt y así sucesivamente.
El siguiente es mi código. ¿Dónde estoy fallando?
$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
}
¿Por qué no en el proceso todo de a uno por vez (y recuerde que las variables obtienen valores predeterminados): 'Get-ChildItem -Path V: \ MyFolder -filt CoptForBuild.bat -rec | Copy-Item -dest {"E: \ copyforbuild \" + $ _. BaseName + ($ i ++) + ". Txt"} '. (Los cmdlets con parámetros que no toman el tipo de objeto, como el destino 'Copy-Item', tienen un for-each incorporado utilizando llaves para que no haya necesidad de un bucle para determinar el destino.) – Richard
Buddy, throws exception . "Copiar-Elemento: no se puede enlazar el argumento con el parámetro 'Ruta' porque es nulo." $ El archivo no contiene elementos cuando se especifica "*. *" – Samselvaprabu
$ File = Get-ChildItem -Path "V: \ MyFolder \\ *. *" -Filter CopyForbuild.bat -Recurse $ i = 1 Foreach ($ f en $ archivo) { Copy-Item $ f.FullName ("E: \ copyforbuild \" + $ + $ f.BaseName i +) $ i ++ "txt."} – Samselvaprabu