【问题标题】:Use the contents of a file to rename alternate companion files使用文件的内容重命名备用伴随文件
【发布时间】:2014-09-11 10:51:20
【问题描述】:

我已经阅读了一些主题 (Use the contents of a file to rename it),虽然它们涉及到我的问题,但我没有足够的深度来修改它们以满足我的需要。我更喜欢批处理解决方案,但其他解决方案也可以。

我有几百个文件,按以下顺序排列:-

  • PHRASE0001.J8I
  • PHRASE0001.WAV
  • PHRASE0002.J8I
  • PHRASE0002.WAV

每个 J8I 二进制文件都开始:-

JS-8  ¬¬fmt    ¬   ¬J8I   ¬    ¬Pop:Classic Pop
JS-8  ¬¬fmt    ¬   ¬J8I   ¬    ¬Pop:Classic Pop (Simple)

然后每个 J8I 二进制文件在 1kb 数据之前用 00 hex 填充大约 256 字节,然后是 EOF。

我想要一个批处理在 PHRASE0001.J8I 中将字符串“Pop:Classic Pop”偏移 33btyes 并将其姊妹文件 PHRASE0001.WAV 重命名为“Pop - Classic Pop.WAV”(即删除所有冒号,一些文件有两个并用“ - ”替换它(SPACEDASHSPACE)

根据相应的 J8I 文件中的内容,仅重命名 WAV。

因此,当 PHRASE0245.J8I 包含时,应将 PHRASE0002.WAV 重命名为“Pop - Classic Pop (Simple).WAV”或将名为 PHRASE0245.WAV 的文件重命名为“Latin - Samba1 (BPM - 100).WAV”

JS-8  ¬¬fmt    ¬   ¬J8I   ¬    ¬Latin:Samba1 (BPM:100)

我相信这个脚本可以在很多情况下使用,一旦完成,即使是我也可以轻松修改。

感谢观看

查理

我忘了,我不能确定,因为我没有检查每个文件,但我认为最长的字符串类似于“Country: Country Ballad (Alternative)”,或者不会长很多,但它们后面总是跟着 00,我想从 64 个字符中截断应该足以避免错误,或者读取直到碰到多个空格应该足以找到字符串长度。

【问题讨论】:

    标签: string batch-file rename


    【解决方案1】:

    对于始终包含空值的示例文件,已对其进行了测试,并且可以在此处使用。

    在文件夹中的一些示例文件上自行测试 - 您需要下载免费的 Windows 版 GNUsed
    并且可能还需要将脚本中的sed 替换为您的安装位置,
    "c:\utils\gnused\sed.exe" 一样,除非你把它(和 sed 支持文件)放在 PATH 上的文件夹中。

    @echo off
    for %%a in (*.J8I) do (
       if exist "%%~na.wav" for /f "delims=" %%b in (' sed -e "s/^.\{32\}\(.[^\x00]*\).*/\1/" -e "s/:/ - /g" "%%a" ') do (
          if exist "%%~na.wav" echo renaming "%%~na.wav" to "%%b.wav" & ren "%%~na.wav" "%%b.wav"
       )
    )
    pause
    

    【讨论】:

    • 查看我编辑的代码——它使用了一个不同的帮助工具,叫做GnuSed,需要安装。 NULLS 在批处理脚本中很难处理。
    • 是的,这是一种享受,谢谢:) ...这不是我第一次被困在重命名文件中,我相信这不会是最后一次,这将节省我编辑 911文件,然后重命名 911 文件,我也可以将其用于将来使用。谢谢,谢谢,谢谢,你太棒了!对于其他阅读者,我将 sed 二进制文件和依赖项提取到与批处理和目标文件相同的文件夹中,并且没有修改代码。我删除了我的回复,以使主题更清晰,更易于理解。小心 Foxidrive :)
    • 谢谢,如果没有g 命令,它将无法重命名某些文件,因为: 字符会出错。我在代码中添加了一行,以便在重命名时将这些行回显到日志文件中。您可以稍后检查日志文件以查看哪些文件失败并可能查看原因。
    • 是的,我想我已经在上面编辑的代码中解决了这个问题。一切都好,我很高兴它完成了工作。
    • 轻微编辑,你之前错过了一个引号 & ren echo renaming "%%~na.wav" to "%%b.wav" & ren "%%~na.wav" "%%b.wav" 。我找到了一个编辑按钮,出于好奇尝试了自己,但没有得到批准。再次感谢您,完美!!!
    猜你喜欢
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 2011-10-20
    • 2014-11-30
    相关资源
    最近更新 更多