我尝试使用Powershell ISE来帮助我执行以下操作:
理想情况下,我想要的是使用新名称将现有文件复制到同一目录。似乎我在Powershell ISE上运行的所有搜索都没有得到我需要的正确信息(或者我没有找到正确的方法来做到这一点 - 尝试' powershell ise使用新名称复制许多文件并没有帮助。
我有更换件并且正在工作,但我不想再删除原始的tmpl文件(它们是模板,因此我可能希望稍后查看它们的原始内容)。
我正在做的更换它是:
Get-ChildItem -Filter "*props.tmpl" -Recurse |
Rename-Item -NewName { $_.name -replace '.tmpl',''}
除了完全删除原始文件外,其他方法很有用。
我开始尝试将某些内容拼凑在一起,但我不明白如何正确命名副本并在此时停止只是一个错误(这是尝试跳过额外的副本而只是简单地重命名副本而不是添加' * .tmpl2')的额外步骤:
# Get all *props.tmpl files
Get-ChildItem -Filter "*props.tmpl" -Recurse |
# Iterate through each found file
ForEach-Object {
Copy-Item $_.name |
Rename-Item -NewName { $_.name -replace '.props.tmpl','.props' }
}
任何帮助都会非常感激(不是很多Powershell的人,但是我试图学习,因为powershell往往比oldschool批处理脚本更有活力)。
提前致谢
@ssennett提供的每个帮助的最终版本
这是我的最终版本:
# Get all *props.tmpl files
Get-ChildItem -Filter "*props.tmpl" -Recurse |
# Iterate through each found file and copy it to non-template form in same location
ForEach-Object {
Copy-Item $_.FullName ($_.Name -replace '.tmpl','')
}
答案 0 :(得分:1)
你离答案不太远!它只是处理Copy-Item的方式。
如果未指定Destination,Copy-Item将有效地尝试将文件复制到自身。您可以使用-Destination参数处理重命名,而不是将其管道到Rename-Item,如下所示。
$files = Get-ChildItem -Filter "*props.tmpl" -Recurse
$files | % { Copy-Item -Path $_.FullName -Destination ($_.Name -replace 'props.tmpl','.props') }
这会将名为 RandomFileprops.tmpl 的文件复制到另一个文件 RandomFile.props 中。如果要删除原始文件,可以使用具有相同参数的 Move-Item cmdlet,这样可以有效地重命名原始文件。