返回列表 发帖

[原创] 个人对批处理的一些看法想法

本帖最后由 newswan 于 2024-7-23 13:42 编辑

批处理有很多坑,太不完善了。而且几十年来也没有改进。

第一,个人最讨厌的是 for 语句,被称为最强大的语句,当然,存在最强大语句,也就是一个编程语言最失败的地方。
批处理读取文件的方法,是使用for 语句。
批处理获取输出的方法,是把语句放入 for 中。
第二,在命令行和脚本中,命令行中使用 % 脚本中适应%%。
第三,处理文本,特殊字符要特殊对待。
第四,正则表达式支持很弱,只有findstr。
所以,批处理这些坑,能绕过的绕过,使用 sed grep awk 来处理字符串和文件。用 powershell 代替批处理,先进,容易理解,调试方便。

编程语言应该恰当的表述现实,并且合适的进行处理。
以前没多少选择,只能在批处理中折腾。
现在,简单任务用批处理,复杂的应该去选择更好的方法。

本帖最后由 qixiaobin0715 于 2024-7-24 09:37 编辑

感觉这里的解决的问题都不是太复杂,少则一行,多则几十行而已。
论坛的名字就是”批处理之家“吧。
总体上还是支持楼主的说法。就是不该发在这个板块里,既不是教程也不是资料,发在”BAT求助&讨论“比较合适,建议管理员将此贴移到其它合适的板块。

TOP

不敢认同
1、批处理是最简单的脚本语言了,肯定有缺陷,但是批处理能解决一些需求,就用批处理来解决就ok了。解决不了的,利用第三方或者更换其他语言、其他方法。任何语言不可能满足全部要求,各有优缺点。
2、既然是批处理论坛,就以批处理为主来讨论。如果有个powershell论坛,可能里面也会有人说powershell的一些缺陷,建议用其他语言。但是并不是每人都熟悉或者会使用其他语言。
3、适合自己的就行了,可以解决需求就行了……

TOP

批处理简单易上手,只要应用得当,还是很强大的,我同意3楼的观点。
本报告由逍遥@浪子@友情提供 由日志扫描工具纯P处理1.5.5-F版自动生成
逍遥@浪子@反病毒博客  http://hi.baidu.com/逍遥问
程序已经自动过滤微软数字签名通过的项目
扫描以下内容:
    安全隐患扫描及修复(包括关闭默认共享,显示隐藏拓展名,显示隐藏文件,关闭自动播放等功能)
    系统劫持项目扫描 (包括IE浏览器劫持、IFEO劫持、CMD重定向劫持、组策略劫持项目检测等)
    所有的启动项目(包括注册表启动、启动文件夹、服务、驱动、Winlogon加载项等)
    正在运行的进程(包括可疑模块信息)
    HOSTS 文件
    Autorun.inf
    文件关联
    计划任务
2024-07-18 星期四 10:00:37     用户名: Ad89
Microsoft Windows XP [版本 5.1.2600]
===========================================
安全隐患扫描
===========================================
        默认共享
名为 C$ 的默认共享不存在
名为 D$ 的默认共享不存在
名为 E$ 的默认共享不存在
名为 F$ 的默认共享不存在
名为 admin$ 的默认共享不存在
===========================================
      显示隐藏拓展名
           正常
===========================================
      显示隐藏文件
           正常
===========================================
      自动播放功能
操作成功结束
已经修复禁止自动播放功能!
===========================================
      磁盘格式检测
      C盘是NTFS格式
      D盘是NTFS格式
      E盘是NTFS格式
      F盘是NTFS格式
===========================================
注册表启动项目
===========================================
      启动加载项目
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
<ctfmon.exe> <REG_SZ> <C:\WINDOWS\system32\ctfmon.exe>
<GoogleChromeAutoLaunch_078DAA683E856FA85F1DC8A0C0FC2B69> <REG_SZ> <"C:\Program Files\UCBrowser\Application\UCBrowser.exe" --no-startup-window /prefetch:5>
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
===========================================
      桌面加载项目
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Explorer\ShellExecuteHooks]
<{AEB6717E-7E19-11d0-97EE-00C04FD91972}> <REG_SZ> <>
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ShellServiceObjectDelayLoad]
<PostBootReminder> <REG_SZ> <{7849596a-48ea-486e-8937-a2a3009f31a9}>
<CDBurn> <REG_SZ> <{fbeb8a05-beee-4442-804e-409d6c4515e9}>
<WebCheck> <REG_SZ> <{E6FB5E20-DE35-11CF-9C87-00AA005127ED}>
<SysTray> <REG_SZ> <{35CEC8A3-2BE6-11D2-8773-92E220524153}>
<WPDShServiceObj> <REG_SZ> <{AAA288BA-9A4C-45B0-95D7-94D524869DB5}>
===========================================
      浏览器加载项目
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper <Objects\{889D2FEB-5411-4565-8998-1DD2C5261283}>
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper <Objects\{DDD362CF-523B-4BC9-8FDC-58F93B6BC945}>
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper <Objects\{DE05CF4A-7B0A-4775-B5E5-396244938679}>
===========================================
      winlogon加载项目
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
<Shell> <REG_SZ> <Explorer.exe>
<Userinit> <REG_SZ> <C:\WINDOWS\system32\userinit.exe,>
<UIHost> <REG_EXPAND_SZ> <logonui.exe>
===========================================
      浏览器主页扫描
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
    Start Page REG_SZ about:blank
===========================================
系统劫持项目
===========================================
      浏览器劫持扫描
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\IEXPLORE.EXE\shell\open\command
    <没有名称> REG_SZ "C:\Program Files\Internet Explorer\iexplore.exe"
===========================================
===========================================
        非系统服务
c20ukdrwsvc
[c20ukdrwsvc] [Stopped/Manual]
C:\Program Files\95599 Certificate Tools\Watertek\c20ukdrwsvr.exe
clr_optimization_v4.0.30319_32
[Microsoft .NET Framework NGEN v4.0.30319_X86] [Stopped/Auto]
===========================================
        非系统驱动
[C:\\WINDOWS\\system32\\DRIVERS\\ACPI.sys               ] []
[C:\\WINDOWS\\system32\\drivers\\acpiec.sys             ] []
[C:\\WINDOWS\\system32\\drivers\\aec.sys                ] []
[C:\\WINDOWS\\system32\\drivers\\afd.sys                ] []
===========================================
        正在运行的进程
  
Description          ExecutablePath                                                                           
System Idle Process                                                                                            
System                                                                                                         
smss.exe             C:\WINDOWS\System32\smss.exe
===========================================
可疑的DLL模块  
3:00 Microsoft Corp. c:\windows\system32\dmserver.dll   
9:09 不可用 c:\windows\system32\hp1006lm.dll COPY
你能想象以上日志是由纯批处理脚本编写扫描获得的吗?这个程序是本人最得意的作品,只节选了扫描的部分内容做展示。其实如果搭配上VBS,脚本真的可以做很多事情,只是认知限制了你的想象。

早期版本依赖于外部工具PV和AOTORUN,最早成形于2008年。
日志扫描纯P版为1.5版本,2009年11月22日更新,为半成品,不依靠系统以外工具实现扫描日志输出,当时可疑DLL扫描和计划任务还没能实现。
新P版扫描为1.5.1版本2010年更新,基本成型,实现功能。
Batchscan1.5.2版本2011年7月2日更新,稳定性最佳的版本。
Batchscan1.5.3版本,2011年12月22日更新,更新非系统服务段代码,更新双重过滤可疑DLL模块。
Batchscan1.5.5版本,2014年8月27日更新,将代码整理的好看一点,修正细小问题,添加过滤显卡DLL签名,修改博客连接等。
Batchscan1.5.6版本  2014年10月28日更新
逍遥@浪子@反病毒
http://hi.baidu.com/luckboy039

TOP

两个都好用,bat原地踏步,ps继续前进

TOP

我个人认为bat是很难的
bat语法不严谨,形式多样,细节也多,不熟悉或者稍微不注意就可能被坑了
而且很多是用特殊字来符界定功能,在处理特殊字符时超级麻烦,经常要思考parser的解析行为和解析规则
感觉懂得越多,就越不会,经常写着写着会怀疑人生(比如这个特殊字符在这里有没有其他意思,要不要转义,又是如何转义),当然这不只是是bat,其他shell语言也如此,懂得越多,就感觉越不会

至于poweshell,这东西混合了shell形式,script形式,编译型语言形式,超级超级超级混乱,程度番3倍,学习编程语言细节和parser行为规则的不二选择

TOP

返回列表