目前我正在开发一个处理特定存档格式的小工具。问题是:假设我有几个匹配*.zipped.*
模式的文件。保证最后一个星号代表格式(扩展名)。如何通过Windows .bat-file将所有匹配的文件传递给实用程序?
示例脚本应该是这样的:
FOR /R "%CD%" %%I IN (*.zipped.*) DO (
SET file_name=%%I
offzip %%I !file_name:~end,end-7!%%~xI
)
其中“offzip”代表我使用的实用程序。 当然,这个没有帮助。顺便说一句,扩展可能有不同的长度。
示例案例:
感谢您的帮助!
答案 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"
}
}