Sam*_*abu 9 powershell powershell-2.0
我试图递归复制文件并重命名它们.
我的文件夹中有相同名称的文件,所以我需要在复制时重命名它.
但我一直面临着问题.以下是我的代码.它应该找到CopyForBuild.bat文件并将其复制到E:\ CopyForBuild文件夹.复制后,第一个文件应为Copyforbuild1.txt,第二个文件为CopyforBuild2.txt,依此类推.
以下是我的代码.我哪里失败了?
$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
}
Run Code Online (Sandbox Code Playgroud)
And*_*huk 14
您可以在Copy-Item中复制时重命名文件,只需在两个位置提供完整路径:
copy-item c:\PST\1.config c:\PST\2.config
Run Code Online (Sandbox Code Playgroud)
这会将1.config重命名为2.config.无需调用单独的重命名功能.你的代码现在应该是这样的:
$File = Get-ChildItem -Path "V:\MyFolder\" -Filter CopyForbuild.bat -Recurse
$i=1
Foreach ($f in $File)
{
Copy-Item $f.FullName ("E:\copyforbuild\" + $f.BaseName + $i +".txt")
$i++
}
Run Code Online (Sandbox Code Playgroud)
如果使用For循环,你可以使它更短:
$File = Get-ChildItem -Path "V:\MyFolder\" -Filter CopyForbuild.bat -Recurse
for($i = 0; $i -lt $File.Count; $i++)
{
Copy-Item $File[$i].FullName ("E:\copyforbuild\" + $File[$i].BaseName + $i +".txt")
}
Run Code Online (Sandbox Code Playgroud)
如果遵循理查德的评论,或者更短更宽
| 归档时间: |
|
| 查看次数: |
21225 次 |
| 最近记录: |