您好,我想根据一个条件将一组 .bin 文件重命名为 .oma:.bin 文件的前 4 个字节应该包含字符串“RIFF”。如果它包含其他内容,则不要重命名。
我目前正在使用 Windows 7 Pro。是否有内置的自动化软件可供我使用?
我以后也需要这种自动化功能来更改一堆 mp3 标题...
答案1
您可以使用以下内置 Windows Powershell 脚本实现此目的:
$files = get-childitem | where {$_.extension -eq '.bin'}
foreach ($f in $files)
{
try
{
$reader = $f.Open([System.IO.FileMode]::Open)
$bytes = new-object byte[] 4
$numRead = $reader.Read($bytes, 0, $bytes.Count)
}
finally
{
if ($reader)
{
$reader.Dispose()
}
if ($numRead -eq 4)
{
$encoding = new-object "System.Text.ASCIIEncoding"
if ($encoding.GetString($bytes) -eq "RIFF")
{
$newname = $f.Name.Replace(".bin", ".oma")
rename-item $f -newname $newname
}
}
}
}
答案2
我不知道“开箱即用”的解决方案。
也许用 python 或 perl 或者任何你喜欢的方式编写简单的脚本是最简单的方法。
答案3
好吧,有人必须发布一个 bash 解决方案。
find . -name '*.bin' -exec head -q -c 4 {} \; -exec printf ' %s' {} \; -exec printf '\n' \; | grep RIFF | cut -d' ' -f2- | tr "\n" "\0" | xargs -0 rename -v 's/\.bin/\.oma/'
更新:
- 支持带空格的文件名
- 意识到如果对高管进行重新排序、移除,‘rev’技巧就是不必要的。