【发布时间】:2016-10-28 19:41:07
【问题描述】:
问题
我在工作时经常发现自己需要快速方法来重命名随机文件。我需要将这些文件名归结为与 Web 标准和一些个人需求兼容的结构。下面举几个例子:
当我发现我需要 ---------------------------------- ---------------- ------------------------- 欢迎参加派对.JPG welcome_to_the_party.jpg 说明(和一些其他提示) instructions_and_some_other_tips 酒吧饮品——最佳食谱 bar_drinks_the_best_recipes La mañana del águila y el ratón la_manana_del_aguila_y_el_raton基本上我需要:
- 所有大写字符变为小写
- 空格变成下划线
- 其他语言的一些其他特殊字符和变音符号成为最接近的匹配项(á 是 a,é 是 e,ç 是 c,等等...)
- 类似 ( ) [ ] { } ' 的符号; , 彻底消失
- 也许一些替换(可选)为:# = no; @ = at or & = and
不是问题,只是仅供参考,您可以看到全局
我将使用注册表项 [HKEY_CLASSES_ROOT*\shell...],因此我可以通过右键单击所需文件并传递参数信息(相关文件)来调用批处理文件和/或 PowerShell 脚本那样写剧本。
我的猜测
我一直在仔细研究 PowerShell 脚本,但我对这个领域还不是很了解,到目前为止提供的所有解决方案都是针对 整个文件夹 (Dir/Get-ChildItem) 而不是特定文件。
例如,我成功地使用下面的行 (PowerShell) 将所有空格替换为下划线,但它也会影响目录中的其他文件。
Dir | Rename-Item –NewName { $_.name –replace “ “,”_“ }
再一次,我不需要为整个文件夹解决这个问题,因为我已经有办法使用像 Total Commander 这样的软件来解决这个问题。
感谢您能给我的任何帮助。
鲁伊
【问题讨论】:
-
使用批处理文件,您只需使用多个 set 语句将一个字符替换为另一个字符。这是基本的字符串替换。所以用下划线替换空格:
set var=%var: =_% -
我们在 Dostips.com 上还有一个批处理文件功能来进行小写转换。 dostips.com/DtCodeCmdLib.php#Function.toLower
-
为什么要使用智能引号?那行不通……
-
如果您需要 Powershell 解决方案,请从您的问题中删除批处理文件标签。
-
正如@Squashman 已经说过的,您的大部分任务都可以通过简单的substring replacement 来完成;唯一相当具有挑战性的事情可能是用单个下划线替换像 space_
-_space 这样的连续字符,但for /F可能会为此服务;无论如何,您需要展示自己的努力,因为 StackOverflow 不是免费的代码编写服务!
标签: powershell character filenames substitution