如何重命名目录中的多个文件?

时间:2015-02-21 20:35:08

标签: powershell batch-file scripting

目录中有很多文件,名称为

injector.cpython-33.pyo
PregnancyMegaMod.cpython-33.pyo

我需要从它们.cpython-33片段剪切,即重命名文件后必须像

injector.pyo
PregnancyMegaMod.pyo

如何编写批处理文件或PowerShell脚本?

3 个答案:

答案 0 :(得分:1)

解决方案是

Get-ChildItem -Filter "*.pyo" -Recurse | Rename-Item -NewName {$_.name -replace '.cpython-33','' }

答案 1 :(得分:1)

假设没有任何文件有额外的点(换句话说,没有像" a.b.cpython-33.pyo"这样的文件),那么你可以使用如下内容:

ren *.cpython-33.pyo" "??????????????????????????????????????????.pyo"

?之前的最长名称必须与.cpython=33.pyo"一样多jren "\.cpython-33\.pyo$" ".pyo" /i 。有关详细信息,请参阅How does the Windows RENAME command interpret wildcards?

如果可能有其他点,那么您可以使用我的JREN.BAT utility - 一个混合JScript /批处理脚本,它使用正则表达式替换执行重命名操作。它是纯脚本,可​​以在XP以后的任何Windows机器上本机运行。

{{1}}

答案 2 :(得分:1)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
FOR %%a IN ("%sourcedir%\*.pyo") DO FOR %%b IN ("%%~na") DO IF /i "%%~xb"==".cpython-33" ECHO(REN "%%~fa" %%~nb.pyo"
GOTO :EOF

您需要更改sourcedir的设置以适合您的具体情况。

为了测试目的,所需的REN命令仅为ECHO在您确认命令正确后,将ECHO(REN更改为REN以实际重命名文件。

显然,该方法的关键是for %%a行。

对于与所选目录中的掩码匹配的每个文件,获取名称部分,并使用该名称部分,提取" name"部分。如果"扩展" part是期望的字符串,然后构建重命名命令。