如何通过读取其内容而不是扩展名来识别给定文件是否是批处理文件?

时间:2021-01-29 11:01:43

标签: batch-file

对于诸如 EXE、MSI 和 MSP 之类的可执行文件,我能够通过读取其几个字节来检测文件类型。但是我无法通过读取其内容来检测 BATCH 文件。用户可以更改 BATCH 文件扩展名,因此我不想依赖扩展名来检测 BATCH 文件。有没有办法通过以编程方式读取其内容来检测 BATCH 文件?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

注意:正如 Compo 所说,如果没有复杂的算法,就没有明确的方法可以做到这一点,而且这个问题在超级用户或其他平台(以及你们中的一些人)上会更好可能不喜欢这样,但未来的观众可以从中获得一些帮助,并且可以通过投反对票 - 该消息将在一段时间内被我删除)。

这里有一个批处理文件可以帮助您完成程序(不完全是您的答案)。

@echo off
rem probably the batch file isn't well written.you can add commands for better detection
rem and also might have great limitations 
rem improvements are welcomed
set file=%1
findstr /C:"@echo off" /C:"set" /C:"set /p" /C:"pause" /C:"echo" /C:"pause >nul" /C:"cd" /C:"call" /C:"goto" /C:"if" /C:"type" /C:"rem" /C:"copy" /C:"move" /C:"cls" /C:"wmic" %file% >nul
if %errorlevel%==0 (
echo Appears to be a batch file
) else (
echo Doesn't appear to be a batch file
)