batch-file - 如何通过读取其内容而不是扩展名来识别给定文件是否是批处理文件?
问题描述
对于像 EXE、MSI 和 MSP 这样的可执行文件,我可以通过读取它的几个字节来检测文件类型。但我无法通过读取其内容来检测 BATCH 文件。用户可以更改 BATCH 文件扩展名,因此我不想依赖扩展名来检测 BATCH 文件。有没有办法通过以编程方式读取其内容来检测 BATCH 文件?
任何帮助将不胜感激。
解决方案
(注意:正如 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
)
推荐阅读
- javascript - Individual column searching filter for js sourced data using DataTable.js
- magento2 - 我们找不到符合选择的产品。megento 2中的错误
- java - 如何以正确的顺序将 LinkedHasMap 值转换为 ArrayList/Array?
- php - 如何使用php在表格中显示低于同一日期的出勤率?
- mysql - 从 mysql 到 HDFS 或 Hive 表的数据实时更新(CDC 方法)
- list - 如何使特定列表值(tcl)
- python - 使用 sed、awk、perl 等删除 N 个匹配模式
- php - 如何创建用于连接数据库的索引文件
- .htaccess - 使用 htaccess 在每个 URL 的末尾添加“?XDEBUG_PROFILE=on”
- javascript - 如何通过单击父