我读过一些主题( 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二进制文件在1kb的数据之前填充大约256字节的00十六进制,然后是EOF。
我想要一个批处理,把PHRASE0001.J8I中的字符串"Pop :经典Pop“偏移到33位,并将其姐妹文件PHRASE0001.WAV重命名为”Pop-经典Pop.WAV“(即删除所有冒号,一些文件有两个并替换为”-“(SPACEDASHSPACE) )。
根据相应的J8I文件中的内容,只能重命名WAV。
因此,当PHRASE0245.J8I包含一个名为PHRASE0245.WAV的文件时,应该将其改名为“PHRASE0245.WAV”,或者将其命名为“.WAV- Samba1 (BPM - 100).WAV”。
JS-8 ¬¬fmt ¬ ¬J8I ¬ ¬Latin:Samba1 (BPM:100)我相信,这个脚本可以在许多情况下使用,一旦完成,即使是我也可以轻松修改。
谢谢你找我
查利
我忘了,我不能肯定,因为我没有检查每一个文件,但我认为最长的字符串类似于" Country : Country Ballad (Alternative)“,或者不太长,但它们总是后面跟着00,我想要么从64个字符中截短就足以避免错误,要么读到多个空格就足以找到字符串的含义。
发布于 2014-07-21 03:11:32
对于具有空值的示例文件,将对其进行测试,并在这里工作。
在文件夹中的一些示例文件上自己测试它--您需要下载免费的GNUsed for Windows
而且可能还需要用安装位置替换脚本中的sed,
与"c:\utils\gnused\sed.exe"类似,除非您将它(和sed支持文件)放在路径上的文件夹中。
@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"
)
)
pausehttps://stackoverflow.com/questions/24856524
复制相似问题