Windows批量重命名

时间:2018-04-22 20:41:09

标签: windows batch-file cmd

目前我正在开发一个处理特定存档格式的小工具。问题是:假设我有几个匹配*.zipped.*模式的文件。保证最后一个星号代表格式(扩展名)。如何通过Windows .bat-file将所有匹配的文件传递给实用程序?

示例脚本应该是这样的:

FOR /R "%CD%" %%I IN (*.zipped.*) DO (
 SET file_name=%%I
 offzip %%I !file_name:~end,end-7!%%~xI
)

其中“offzip”代表我使用的实用程序。 当然,这个没有帮助。顺便说一句,扩展可能有不同的长度。

示例案例:

  • “sample.zipped.txt” - > “sample.txt的”
  • “zipped123.zipped.dat” - > “zipped123.dat”
  • “abc.zipped.sampleextension” - > “abc.sampleextension”

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您可以使用嵌套的For循环将.zipped视为通过元变量扩展删除它的另一个扩展名:

For /R %%A In (*.zipped.*) Do For %%B In ("%%~dpnA"
) Do offzip "%%A" "%%~dpnB%%~xA"

答案 1 :(得分:0)

将下面的脚本放入zren.ps1等文件中,然后使用:

调用它
powershell -NoLogo -NoProfile -File zren.ps1

=== zren.ps1

Get-ChildItem -File -Recurse -Filter '*.zipped.*' |
    ForEach-Object {
        if ($_.Name -match '.*\.zipped\.[^\.]*$') {
            $newname = $_.Name -replace '\.zipped\.','.'
            & offzip "$_.FullName" "$newname"
        }
    }