使用文件的内容重命名备用伴随文件

时间:2014-07-21 01:24:10

标签: string batch-file rename

我已经阅读了一些主题(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二进制文件用00十六进制填充大约256字节,然后再写入1kb的数据,然后是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”。 p>

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

我认为这个脚本可以在很多情况下使用,一旦完成,即使是我也很容易修改。

感谢您寻找

查理

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

1 个答案:

答案 0 :(得分:0)

对于整个都有空值的示例文件,这是经过测试的,它可以在这里工作。

自行测试文件夹中的一些示例文件 - 您需要为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