我已经阅读了一些主题(Use the contents of a file to rename it),当他们触及我的问题时,我没有深度根据我的需要修改它们。我更喜欢批量解决方案,其他方面也没问题。
我按以下顺序排列了几百个文件: -
每个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。
答案 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