如何在PowerShell中重命名文件?

3

我有两个任务需要使用PowerShell完成:

1 - 我还需要将所有的index.asp重命名为Default.aspx。

2 - 我有一个目录C:\WWW,需要递归地将所有的.asp文件重命名为.aspx。

我尝试过Rename-Item命令,但总是出现错误。

当该文件已经存在时无法创建文件

如何在PowerShell中重命名文件?

1个回答

6
使用 Get-ChildItem cmdlet 获取所有 index.asp 文件。将结果传递到 Rename-Item cmdlet 并给文件赋予新名称。
Get-ChildItem c:\www -Filter Index.asp -Recurse | Where-Object {$_.Extension -eq '.asp' } | Rename-Item -NewName Default.aspx

要获取index.aspx文件,可以使用管道符将结果发送到“Where-Object”命令,根据文件扩展名进行筛选。

同样,要处理asp文件,注意现在也会得到.aspx文件,所以需要将结果发送到“Where-Object”命令,并根据文件扩展名进行过滤。在新名称中,只需获取每个文件的基本名称(不包括扩展名),并附加“.aspx”后缀。

Get-ChildItem c:\www -Filter *.asp -Recurse | Where-Object {$_.Extension -eq '.asp' } | Rename-Item -NewName {$_.BaseName + '.aspx'}

@Shay 在你的第一行代码中,你正在过滤 Index.asp,然后使用 Where 条件过滤 .asp 以消除 .aspx 的查找。对于我来说,在一个同时包含 Index.aspIndex.aspx 的目录中过滤 Index.asp 只会找到前者;是否有什么原因导致这两种不同的结果,还是只是疏忽呢? - SpellingD
@SpellingD 你说得对,我也得到了相同的结果。有趣的是,当你使用通配符过滤时,你也会得到aspz文件,但是当你指定文件名时,你只会得到asp文件!感谢你指出这一点,我会更新我的答案。 - Shay Levy
1
@Unreal1969,很高兴你觉得它有用,考虑将其标记为答案。 - Shay Levy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接