【问题标题】:Batch command double extension fix批处理命令双扩展修复
【发布时间】:2015-06-23 11:58:53
【问题描述】:

大家好,我想问一下如何使用批处理脚本删除错误添加的第二个文件扩展名

例如“test.aac.m4a”->“test.m4a”

所以 last 扩展是我想要的正确扩展。 但这仅适用于

.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 -> .aac.m4a”时)

据我所知,MusicBee 只是替换变量并在激活时启动批处理代码,所以我认为其他批处理代码也可以工作。

是否有可能阻止这种双重扩展甚至发展?

一如既往地感谢任何帮助!

谢谢,丹尼尔

【问题讨论】:

  • 不确定是否使用批处理,但我在上次遇到大量重命名问题时使用了此软件:advancedrenamer.com 如果这符合您的需要,我会将其发布为答案。它不需要任何命令行的东西,所以它更像是一种 GUI 外行用户方法。
  • 非常感谢!有用!尽管我不喜欢为此使用第三方软件,但我可以在 MusicBee 中做到这一点:我创建了两个重命名批处理脚本(那些来自高级重命名器软件的特殊脚本)并将便携式版本放在我的驱动器上到 MusicBee。然后我创建了一个将文件发送到 AR 的快捷方式: K:\MusicBee\advanced_renamer_portable\arenc.exe -e fix.aac.m4a.aren -f "" 它可以工作!!!我希望这也适用于其他机器 =) 再次非常感谢您!
  • 如果您将路径设为相对路径而不总是与 K:\ 相关,例如将其放入程序文件并将其作为 %programfiles%/MusicBee/arenc.exe 引用,则会出现这种情况。我已经把答案给你接受了,不客气!
  • 谢谢,MusicBe 会自动将驱动器号更改为软件所在的位置(自己的驱动器),因此它应该可以正常工作 =)

标签: batch-file command double audio-player


【解决方案1】:

为了防止双重扩展名的发展,我猜你没有以正确的方式相应地附加文件扩展名,但是我对 Music Bee 一点也不熟悉。

至于创建正确的批处理文件来执行您想要的操作,我过去曾使用Advanced File Renamer 来处理各种重命名模式,例如您的案例。它也是免费软件!该程序有一个相当先进的功能,允许用户在 JavaScript user guide here 中编写自定义脚本。甚至可以为您的特定用例生成执行特殊重命名的批处理脚本(如您在 cmets 中所述)。

对于其他不太高级的用户,该程序有一个 GUI,可以轻松进行批量重命名。

最重要的是,如果您像我一样避免安装第三方软件只是为了尽可能多地做一件事,那么该程序有一个 便携 模式,它不会将自己挂接到您的系统,总是好的。

阅读那里的手册和指南以获取更多信息。我的回答可能听起来有点像为它做广告,但这只是因为它在很久以前重新命名我的音乐时帮助了我很多。

这是 OP RapidFireArts 的屏幕截图,展示了 OP 如何使用该软件删除第二个文件扩展名。

【讨论】:

  • 再次感谢您的解决方案。这是一个截图,我希望能解释一下 MusicBee 是如何处理这个问题的:prntscr.com/6utg9m
  • @RapidFireArts 我可以将其附在我的答案中并为此归功于您吗?干得好!也赞成你的问题。
【解决方案2】:

这应该是可能的,但我不知道如何使用您的软件来防止双重扩展首先发生。但是去掉不需要的中间“扩展”是相当容易的。

如果您知道您的 .m4a 或 .aac 文件都不应该有多个点,那么您可以简单地执行以下操作:

ren *.m4a ???????????????????????????????????????????.m4a
ren *.aac ???????????????????????????????????????????.aac

只需确保您有足够的? 通配符来匹配文件夹中最长的名称。请参阅How does the Windows RENAME command interpret wildcards?,了解此解决方案为何有效。

但有时文件名在实际扩展名之前有合法的附加点。如果这是您的情况,那么以下批处理脚本将仅删除不需要的 .m4a 和 .aac 中间“扩展”

@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.非常感谢您的评论。第一种方法对我不起作用,因为某些音乐文件可能包含更多点(例如艺术家姓名),然后长度可能会有很大差异。第二种方法可行,但我不知道如何使用 MusicBee 正确处理批处理文件,否则这已经是一个很好的解决方案了。我不喜欢使用第三个,因为无法将文件放置在我想要自动执行的位置(这有点复杂)。但是非常感谢你的努力。目前我有一个相当不错的解决方案,它使用 [...]
  • 2. [...] 高级重命名器的便携式版本(由 matrixanomaly 推荐),它是 MusicBee 的命令行功能,它似乎可以完成这项工作。这是 MusicBee 的屏幕截图以及它是如何工作的。我希望这是可以理解的=)prntscr.com/6utg9m问候,丹尼尔
【解决方案3】:

【讨论】:

  • 感谢您的评论,但我想为此使用非第三方工具(例如批处理)(我没有真正指定,对此感到抱歉!)。这是因为我的音乐软件设置为完全可移植的即插即用,所以我不能依赖没有命令行的非便携式软件。
猜你喜欢
  • 1970-01-01
  • 2020-02-28
  • 2019-09-03
  • 1970-01-01
  • 1970-01-01
  • 2013-07-13
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
相关资源
最近更新 更多