批量替换文件名中的字符

问题描述

我有大约 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

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

解决方法

只需使用 \ 转义字符:

在目录中运行 line 时:

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'}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...