Board logo

标题: [原创] 个人对批处理的一些看法想法 [打印本页]

作者: newswan    时间: 2024-7-23 13:40     标题: 个人对批处理的一些看法想法

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

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

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

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

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

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

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

批处理简单易上手,只要应用得当,还是很强大的,我同意3楼的观点。
  1. 本报告由逍遥@浪子@友情提供 由日志扫描工具纯P处理1.5.5-F版自动生成
  2. 逍遥@浪子@反病毒博客  http://hi.baidu.com/逍遥问
  3. 程序已经自动过滤微软数字签名通过的项目
  4. 扫描以下内容:
  5.     安全隐患扫描及修复(包括关闭默认共享,显示隐藏拓展名,显示隐藏文件,关闭自动播放等功能)
  6.     系统劫持项目扫描 (包括IE浏览器劫持、IFEO劫持、CMD重定向劫持、组策略劫持项目检测等)
  7.     所有的启动项目(包括注册表启动、启动文件夹、服务、驱动、Winlogon加载项等)
  8.     正在运行的进程(包括可疑模块信息)
  9.     HOSTS 文件
  10.     Autorun.inf
  11.     文件关联
  12.     计划任务
  13. 2024-07-18 星期四 10:00:37     用户名: Ad89
  14. Microsoft Windows XP [版本 5.1.2600]
  15. ===========================================
  16. 安全隐患扫描
  17. ===========================================
  18.         默认共享
  19. 名为 C$ 的默认共享不存在
  20. 名为 D$ 的默认共享不存在
  21. 名为 E$ 的默认共享不存在
  22. 名为 F$ 的默认共享不存在
  23. 名为 admin$ 的默认共享不存在
  24. ===========================================
  25.       显示隐藏拓展名
  26.            正常
  27. ===========================================
  28.       显示隐藏文件
  29.            正常
  30. ===========================================
  31.       自动播放功能
  32. 操作成功结束
  33. 已经修复禁止自动播放功能!
  34. ===========================================
  35.       磁盘格式检测
  36.       C盘是NTFS格式
  37.       D盘是NTFS格式
  38.       E盘是NTFS格式
  39.       F盘是NTFS格式
  40. ===========================================
  41. 注册表启动项目
  42. ===========================================
  43.       启动加载项目
  44. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
  45. <ctfmon.exe> <REG_SZ> <C:\WINDOWS\system32\ctfmon.exe>
  46. <GoogleChromeAutoLaunch_078DAA683E856FA85F1DC8A0C0FC2B69> <REG_SZ> <"C:\Program Files\UCBrowser\Application\UCBrowser.exe" --no-startup-window /prefetch:5>
  47. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
  48. ===========================================
  49.       桌面加载项目
  50. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Explorer\ShellExecuteHooks]
  51. <{AEB6717E-7E19-11d0-97EE-00C04FD91972}> <REG_SZ> <>
  52. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ShellServiceObjectDelayLoad]
  53. <PostBootReminder> <REG_SZ> <{7849596a-48ea-486e-8937-a2a3009f31a9}>
  54. <CDBurn> <REG_SZ> <{fbeb8a05-beee-4442-804e-409d6c4515e9}>
  55. <WebCheck> <REG_SZ> <{E6FB5E20-DE35-11CF-9C87-00AA005127ED}>
  56. <SysTray> <REG_SZ> <{35CEC8A3-2BE6-11D2-8773-92E220524153}>
  57. <WPDShServiceObj> <REG_SZ> <{AAA288BA-9A4C-45B0-95D7-94D524869DB5}>
  58. ===========================================
  59.       浏览器加载项目
  60. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper <Objects\{889D2FEB-5411-4565-8998-1DD2C5261283}>
  61. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper <Objects\{DDD362CF-523B-4BC9-8FDC-58F93B6BC945}>
  62. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper <Objects\{DE05CF4A-7B0A-4775-B5E5-396244938679}>
  63. ===========================================
  64.       winlogon加载项目
  65. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
  66. <Shell> <REG_SZ> <Explorer.exe>
  67. <Userinit> <REG_SZ> <C:\WINDOWS\system32\userinit.exe,>
  68. <UIHost> <REG_EXPAND_SZ> <logonui.exe>
  69. ===========================================
  70.       浏览器主页扫描
  71. HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
  72.     Start Page REG_SZ about:blank
  73. ===========================================
  74. 系统劫持项目
  75. ===========================================
  76.       浏览器劫持扫描
  77. HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\IEXPLORE.EXE\shell\open\command
  78.     <没有名称> REG_SZ "C:\Program Files\Internet Explorer\iexplore.exe"
  79. ===========================================
  80. ===========================================
  81.         非系统服务
  82. c20ukdrwsvc
  83. [c20ukdrwsvc] [Stopped/Manual]
  84. C:\Program Files\95599 Certificate Tools\Watertek\c20ukdrwsvr.exe
  85. clr_optimization_v4.0.30319_32
  86. [Microsoft .NET Framework NGEN v4.0.30319_X86] [Stopped/Auto]
  87. ===========================================
  88.         非系统驱动
  89. [C:\\WINDOWS\\system32\\DRIVERS\\ACPI.sys               ] []
  90. [C:\\WINDOWS\\system32\\drivers\\acpiec.sys             ] []
  91. [C:\\WINDOWS\\system32\\drivers\\aec.sys                ] []
  92. [C:\\WINDOWS\\system32\\drivers\\afd.sys                ] []
  93. ===========================================
  94.         正在运行的进程
  95.   
  96. Description          ExecutablePath                                                                           
  97. System Idle Process                                                                                            
  98. System                                                                                                         
  99. smss.exe             C:\WINDOWS\System32\smss.exe
  100. ===========================================
  101. 可疑的DLL模块  
  102. 3:00 Microsoft Corp. c:\windows\system32\dmserver.dll   
  103. 9:09 不可用 c:\windows\system32\hp1006lm.dll
复制代码
你能想象以上日志是由纯批处理脚本编写扫描获得的吗?这个程序是本人最得意的作品,只节选了扫描的部分内容做展示。其实如果搭配上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日更新
作者: idwma    时间: 2024-7-25 00:52

两个都好用,bat原地踏步,ps继续前进
作者: Five66    时间: 2024-8-24 14:41

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

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




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2