【发布时间】:2016-06-01 16:19:31
【问题描述】:
我正在尝试使用 Powershell ISE 来帮助我执行以下操作:
- 在某个文件夹下搜索多个文件(扩展名为 *props.tmpl)并包括所有子目录。
- 找到后,我想将该文件复制到其当前位置,但扩展名为 *.tmpl2(我真正想要的是跳过此步骤并将 *props.tmpl 复制到名为 *props 的文件中)李>
- 然后重命名所有 *.tmpl2 文件并完全删除 tmpl2,只留下 *.props 扩展名。
理想情况下,我想要的是用新名称将现有文件复制到同一目录。似乎我在 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 往往比老式批处理脚本更具动态性)。
提前致谢
根据@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','')
}
【问题讨论】:
标签: file powershell copy rename