批量替换文件名中的字符

Batch Replace Character in File Names

我有大约 600 个视频文件,标题中带有 $ 特殊字符。

我想批量替换成字母s.

我在下面在线找到了 powershell 代码,用其他字母替换字母时效果很好,但在尝试替换 $ 特殊字符时失败

get-childitem -recurse | rename-item -newname { $_.name -replace "",""}

我尝试使用下面的代码,它最终在文件类型的末尾添加了一个 s 而不是替换 $

get-childitem -recurse | rename-item -newname { $_.name -replace "$","s"}

$hortvid.mp4 变为 $hortvid.mp4s 而不是 shortvid.mp4

关于如何使其正常工作的任何想法?

只需使用\转义字符:

当目录中的运行行:

get-childitem -recurse | rename-item -newname { $_.name -replace "$","s"}

输入文件:

$hortvid.mp4

输出文件已重命名:

shortvid.mp4

$ 用于在 powershell 中指定变量。带双引号的字符串在 powershell 中是这样计算的:

$variable1="Hello"
$variable2="$variable1 world"
$variable2

如果您不想将一个字符评估为双引号字符串,您可以像@lww 提议的解决方案一样对您的字符进行反斜杠。或者简单地说,您可以使用简单的引号。 像这样:

Get-ChildItem -recurse | Rename-Item -Newname { $_.Name -replace '$', 's'}