大家好,我想问一下如何使用批处理脚本删除错误添加的第二个文件扩展名。
E.g。 “test.aac.m4a” - > “test.m4a”
所以最后扩展名是我想拥有的那个。 但这只是
的情况.aac.m4a
-> .m4a
and
.m4a.aac
-> .aac
我知道一些批处理脚本但是
ren *.aac.m4a *.m4a
不会工作:(
值得一提的另一件事是这些双重扩展来自我的音乐软件 MusicBee 。 我在m4a文件上使用mp4box从m4a容器中提取原始aac流,以便我可以在其他软件中编辑它。 目前的语法是:
mp4box.exe -raw 1 "<URL>" -out "<URL>".aac
The "<URL>" is the variable MusicBee will replace with the file url.
但是这会在.m4a之后添加.aac扩展名,我不知道如何替换它。 (再次当我重新包装文件“.aac - &gt; .aac.m4a”)
据我所知,MusicBee只是替换变量并在激活时启动批处理代码,所以我认为其他批处理代码也可以工作。
是否可以防止这种双重扩展甚至开发?
一如往常,任何帮助都是有益的!
谢谢,丹尼尔
答案 0 :(得分:1)
它应该是可能的,但我不知道如何使用您的软件来防止首先发生双重扩展。但是,剥离不需要的中间&#34;扩展&#34;。
相当容易如果你知道你的.m4a或.aac文件都不应该有多个点,那么你可以简单地执行以下操作:
ren *.m4a ???????????????????????????????????????????.m4a
ren *.aac ???????????????????????????????????????????.aac
确保您有足够的?
通配符来匹配文件夹中最长的名称。有关此解决方案有效的原因,请参阅How does the Windows RENAME command interpret wildcards?。
但有时文件名在实际扩展之前合法地有额外的点。如果是这种情况,那么以下批处理脚本将仅删除不需要的.m4a和.aac中间&#34;扩展&#34;
@echo off
for /f "eol=: delims=" %%A in ('dir /b /a-d *.m4a.aac *.aac.m4a') do (
for %%B in ("%%A") do ren "%%A" "%%~nB%%~xA"
)
另一种选择是使用我的JREN.BAT regular expression file renaming utility。 JREN.BAT是一个混合JScript /批处理脚本,可以在XP以后的任何Windows机器上本机运行。理想情况下,脚本应放在PATH中包含的文件夹中。我喜欢将c:\ utils用于我的所有非标准实用程序。
一旦你有了JREN.BAT,那么你需要的就是
call jren "\.(m4a|aac)(?=\.(m4a|aac)$)" ""
如果您了解正则表达式,并且花时间阅读内置的JREN帮助,那么您可以使用该实用程序执行许多奇妙的操作。通过从命令行发出jren /?
来访问帮助。如果您尚未将控制台窗口配置为具有允许滚动以查看先前输出的大缓冲区,则可能需要使用jren /?|more
。
答案 1 :(得分:1)
答案 2 :(得分:1)
为防止双重延伸的发展,我猜测你没有以正确的方式相应地附加文件扩展名,但我对Music Bee并不熟悉。
至于创建符合您需要的正确批处理文件,我过去曾使用Advanced File Renamer来处理各种重命名模式,例如您的情况。它也是免费软件!该程序具有相当高级的功能,允许用户在JavaScript user guide here中编写自定义脚本。甚至可以生成批量脚本,这些脚本可以针对您的特定用例进行特殊重命名(正如您在评论中所述)。
对于其他不太高级的用户,该程序有一个GUI,可以轻松进行批量重命名。
最重要的是,如果您像我一样避免第三方软件安装只是为了尽可能做一件事,该程序有一个便携式模式,赢得了将自己挂在你的系统中,这总是好的。
阅读手册和指南以获取更多信息。我的回答可能听起来有点像为它做广告,但这只是因为它很久以前在重命名我的音乐方面给了我很多帮助。
这是OP,RapidFireArts的截图,显示OP如何使用该软件删除第二个文件扩展名。