我有一个相当大的文件数据库。这些文件的扩展名各不相同(.txt、.doc、.ppt 等),但每个文件的开头都有一个必须删除的特定短语。
假设我有一个文件 randomtext.doc。在简单的文本编辑器中查看该文件,该文件通常以以下内容开头:
\D0\CFࡱ\E1\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00>\00\00\FE\FF \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00K\00\00\00\00\00\00\00\00\00\00M\00\00\00\00\00\00\FE\FF\FF\FF\00\00\00\00J\00\00\00\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\
但我的文件开头是这样的:
MYPHRASE \D0\CFࡱ\E1\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00>\00\00\FE\FF \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00K\00\00\00\00\00\00\00\00\00\00M\00\00\00\00\00\00\FE\FF\FF\FF\00\00\00\00J\00\00\00\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\FF\
在常规文本编辑器中删除该短语会损坏文件(例如,此文件通常是 .doc 文件,无法通过 Microsoft Word 查看)。我需要能够删除该短语,但保留文件扩展名等。
答案1
这可以通过多种方式实现。例如,可以使用支持二进制文件的搜索和替换实用程序将“MYPHRASE”替换为空字符串。还有十六进制编辑器可以编写脚本来执行此操作。
我建议使用dd(适用于 Windows)不过(一定要下载最新版本,即dd-0.6beta3.zip)。
以下命令可用于从文件开头删除 9 个字节(“MYPHRASE”):
dd bs=9 skip=1 if="Drive:\Path\to\infile.ext" of="Drive:\Path\to\outfile.ext"
如果要对大量文件执行此操作,请将它们全部放在一个目录中,并在编辑后运行以下批处理文件字节数和根文件夹根据您的要求的变量:
@echo off
cls
set delbytes=9
set rootfolder="C:\My Files"
for /r %rootfolder% %%a in (*.*) do (
echo Truncating first %delbytes% bytes of "%%a"
dd bs=%delbytes% skip=1 if="%%a" of="%%~dpna (Truncated)%%~xa"
echo.
)