home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR13 / ZCHECK30.ZIP / ZCHECK.BTM < prev    next >
Text File  |  1993-10-22  |  9KB  |  330 lines

  1. @goto init
  2. REM THIS BATCH FILE CHECKS ZIP FILES FOR VIRUSES THIS IS A WORKING VERSION
  3. REM IT IS NOT INTENDED FOR MODIFICATION THE REGISTERED VERSION CONTAINS
  4. REM A FILE FOR EDITING                                     v3.0
  5. :start
  6. color bla on cya
  7. cls
  8. scrput 12 25 bri whi on cya READING %[wd]
  9. if exist hold.lzt del /q hold.lzt
  10. pushd %[wd]
  11. if not exist *.zip goto v6
  12. pushd %[exd]
  13. md $$$~Z
  14. popd^popd
  15. scrput 12 25 bri whi on cya READING %[wd]
  16. %@exec[pkunzip %[wd]\%@line[ext.lzt,%[v]] -d %[exd]\$$$~Z]
  17. if %? gt 2 gosub v7
  18. color bla on cya
  19. cls
  20. :scan
  21. scan %[exd]\$$$~Z /nomem /sub /a /history check.lzt
  22. iff errorlevel == 0 then
  23. gosub v0
  24. elseiff errorlevel == 1 then
  25. gosub v1
  26. elseiff errorlevel == 2 then
  27. gosub v2
  28. elseiff errorlevel == 3 then
  29. gosub v3
  30. elseiff errorlevel == 4 then
  31. goto v4
  32. else gosub v5
  33. endiff
  34. :ddir
  35. pushd %[exd]^erase $$$~Z\*.* /s/x/y
  36. popd
  37. set v=%@eval[%[v] + 1]
  38. if %[v] gt %[t] goto qsel
  39. goto start
  40. :bwin
  41. drawbox 7 14 17 62 2 bri whi on blu fill blu shadow
  42. return
  43. :v0
  44. set chk=%[v]
  45. drawbox 7 14 18 60 2 bri whi on gre fill gre shadow
  46. scrput 9 30 bri yel on gre %@eval[%[chk] + 1]  of  %@eval[%@lines[ext.lzt] + 1]  files
  47. scrput 10 29 bri whi on gre HAVE BEEN SCANNED
  48. scrput 12 29 bri whi on gre NO VIRUS WAS FOUND
  49. scrput 13 19 bri whi on gre THE EXTRACTED FILES WILL NOW BE DELETED
  50. delay 4
  51. cls
  52. return
  53. :v1
  54. set rs=%@eval[%[rs] + 1]
  55. if not exist hold.lzt rem> hold.lzt
  56. echo %@line[%[rsd]\ext.lzt,%[v]] > hold.lzt
  57. iff exist scum.lzt then copy scum.lzt+hold.lzt
  58. else copy hold.lzt scum.lzt
  59. endiff
  60. del /q hold.lzt
  61. cls bri yel on red
  62. drawbox 2 3 22 76 2 BRI YEL ON RED FILL RED SHADOW
  63. scrput 5 32 BLI BRI YEL ON RED VIRUS FOUND
  64. screen 8 13 THE NAME OF THE DISEASED AND INFECTED ARCHIVE HAS BEEN
  65. screen 9 16 COPIED TO A FILE NAMED FOR THE VIRAL AUTHOR  SCUM.LZT
  66. screen 12 26 THE INFECTED ARCHIVE IS
  67. scrput 14 32 BRI WHI ON RED %@LINE[%[RSD]\EXT.LZT,%[V]]
  68. screen 16 11 ZCHECK WILL CONTINUE TO CHECK THE REMAINDER OF THE FILES
  69. screen 20 13 THIS IS AN AUTOMATIC SCREEN NO USER INPUT IS REQUIRED
  70. delay 20
  71. cls bla on cya
  72. return
  73. :v2
  74. gosub bwin
  75. scrput 9 27 bri whi on blu SCAN HAS ENDED DUE TO
  76. scrput 10 25 bri whi on blu AN INTERNAL PROGRAM ERROR
  77. scrput 15 27 bri whi on blu ZCHECK WILL CONTINUE
  78. delay 5
  79. cls bla on cya
  80. return
  81. :v3
  82. gosub bwin
  83. scrput 9 23 bri whi on blu SCAN HAS FOUND UNCERTIFIED FILES
  84. scrput 10 25 bri whi on blu OR WAS STOPPED BY THE USER
  85. scrput 11 21 bri whi on blu IF YOU DID NOT STOP SCAN THEN CHECK
  86. scrput 12 20 bri whi on blu FILE CHECK.LZT FOR UNCERTIFIED FILES
  87. scrput 15 27 bri whi on blu ZCHECK WILL CONTINUE
  88. delay 5
  89. return
  90. :v4
  91. gosub bwin
  92. scrput 9 28 bri whi on blu SCAN HAS BEEN ABORTED
  93. scrput 10 25 bri whi on blu USING Ctrl-C or Ctrl-Break
  94. scrput 15 25 bri whi on blu DO YOU WISH TO CONTINUE Y/N
  95. screen 22 0
  96. color cya on cya
  97. inkey /K"yn" %%zz
  98. if %[zz] == y (color bla on cya^goto ddir)
  99. if %[zz] == n (color bla on cya^goto qt2)
  100. goto qt2
  101. :v5
  102. gosub bwin
  103. scrput 9 28 bri whi on blu SCAN HAS RETURNED AN
  104. scrput 11 29 bri whi on blu UNKNOWN ERROR LEVEL
  105. scrput 15 27 bri whi on blu ZCHECK WILL CONTINUE
  106. delay 5
  107. return
  108. :v6
  109. gosub bwin
  110. scrput 9 19 bri whi on blu ZCHECK HAS NOT FOUND ANY .ZIP FILES IN
  111. scrput 10 33 bri whi on blu DIRECTORY
  112. scrput 12 16 bri yel on blu %[wd]
  113. scrput 14 24 bri whi on blu ZCHECK WILL END AUTOMATICALLY
  114. delay 7
  115. goto qt3
  116. :v7
  117. gosub bwin
  118. set zs=%@eval[%[zs + 1]
  119. scrput 9 20 bri whi on blu PKUNZIP HAS TERMINATED WITH AN ERROR
  120. scrput 10 34 bri whi on blu ON FILE
  121. scrput 11 16 bri yel on blu %[wd]\%@line[ext.lzt,%[v]]
  122. scrput 12 19 bri whi on blu ZCHECK WILL COPY THIS FILE NAME TO FILE
  123. scrput 13 32 bri whi on blu BADZIP.LZT
  124. scrput 15 27 bri whi on blu ZCHECK WILL CONTINUE
  125. if not exist hold.lzt rem> hold.lzt
  126. echo %[wd]\%@line[%[rsd]\ext.lzt,%[v]] > hold.lzt
  127. iff exist badzip.lzt then copy badzip.lzt+hold.lzt
  128. else copy hold.lzt badzip.lzt
  129. del /q hold.lzt
  130. delay 3
  131. return
  132. :v9
  133. gosub bwin
  134. scrput 9 27 bri whi on blu PKUNZIP WAS NOT FOUND
  135. scrput 11 27 bri whi on blu ZCHECK CANNOT CONTINUE
  136. scrput 13 27 bri whi on blu PLEASE READ ZCHECK.DOC
  137. scrput 15 30 bri whi on blu ZCHECK WILL END
  138. delay 5
  139. goto qt3
  140. :v10
  141. gosub bwin
  142. scrput 9 29 bri whi on blu SAN WAS NOT FOUND
  143. scrput 11 27 bri whi on blu ZCHECK CANNOT CONTINUE
  144. scrput 13 27 bri whi on blu PLEASE READ ZCHECK.DOC
  145. scrput 15 30 bri whi on blu ZCHECK WILL END
  146. delay 5
  147. goto qt3
  148. :v11
  149. gosub bwin
  150. scrput 9 21 bri whi on blu ZCHECK HAS PROCESSED %@eval[%[t] + 1 ] FILES
  151. scrput 11 20 bri whi on blu ZCHECK HAS FOUND %[zs] PROBLEM ZIP FILES
  152. scrput 13 24 bri whi on blu ZCHECK HAS FOUND %[rs] ZIP FILES
  153. scrput 14 26 bri whi on blu WHICH HOLD INFECTED FILES
  154. scrput 16 28 bri whi on blu PRESS ANY KEY TO QUIT
  155. screen 22 0
  156. inkey %%zz
  157. return
  158. :v12
  159. gosub bwin
  160. scrput 9 16 bri whi on blu  ZCHECK HAS FOUND THAT YOU ONLY HAVE %_env BYTES
  161. scrput 10 16 bri whi on blu OF ENVIRONMENT FREE AFTER SETTING YOUR
  162. scrput 11 18 bri whi on blu DIRECTORIES. ZCHECK REQUIRES AT LEAST 45
  163. scrput 12 16 bri whi on blu BYTES AT THIS POINT. YOU MUST INCREASE YOUR
  164. scrput 14 16 bri whi on blu ENVIRONMENT BY AT LEAST A TOTAL OF %@eval[45 - %_env]
  165. scrput 16 27 bri whi on blu ZCHECK WILL NOW END
  166. delay 10
  167. goto qt5
  168. :v13
  169. gosub bwin
  170. scrput 9 25 bri whi on blu FILE ZCHECK.CFG NOT FOUND
  171. scrput 11 27 bri whi on blu ZCHECK CANNOT CONTINUE
  172. scrput 13 27 bri whi on blu PLEASE READ ZCHECK.DOC
  173. scrput 15 30 bri whi on blu ZCHECK WILL END
  174. delay 5
  175. goto qt3
  176. :self
  177. iff exist %_cwd\zcheck.btm then
  178. return
  179. elseiff not "%@search[zcheck.btm]" == "" then
  180. pushd %@path[%@search[zcheck.btm]]
  181. set slf=1
  182. else goto qt4
  183. endiff
  184. return
  185. :init
  186. @echo off
  187. setlocal^unalias *
  188. cls
  189. screen 12 40 T
  190. set sfgc=%_fg
  191. set sbgc=%_bg
  192. gosub self
  193. set rsd=%_cwd
  194. if %1 == ? .or. %1 == h .or. %1 == H goto help
  195. if %1 == error goto erhelp
  196. iff %1 == c .or. %1 == C then
  197. gosub cset
  198. elseiff %1 == z .or. %1 == Z then
  199. gosub cstart
  200. elseiff %# ge 1 then
  201. gosub arg
  202. else gosub argd
  203. endiff
  204. if %_env lt 45 goto v12
  205. if exist zscreen.btm call zscreen.btm
  206. if not exist %_cwd\pkunzip.exe .and. "%@search[pkunzip.exe]" == "" goto v9
  207. if not exist %_cwd\scan.exe .and. "%@search[scan.exe]" == "" goto v10
  208. color bla on cya
  209. pushd %[exd]
  210. if isdir %[exd]\$$$~Z erase $$$~Z\*.* /s/x/y
  211. popd
  212. scrput 12 25 bri whi on cya READING %[wd]
  213. pushd %[wd]
  214. dir /b *.zip > %[rsd]\ext.lzt
  215. popd
  216. rem> zdir$.lzt
  217. echo %[exd] > zdir$.lzt
  218. set t=%@lines[ext.lzt]
  219. set v=0
  220. set zs=0
  221. set rs=0
  222. goto start
  223. :cset
  224. if exist zcheck.cfg del /q zcheck.cfg
  225. if exist hold.lzt del /q hold.lzt
  226. iff %# == 3 then
  227. set wd=%2
  228. set exd=%3
  229. elseiff %# == 2
  230. set wd=%2
  231. set exd=%2
  232. else
  233. gosub argd
  234. endiff
  235. rem>zcheck.cfg
  236. echo %[wd] > zcheck.cfg
  237. echo %[exd] > hold.lzt
  238. copy zcheck.cfg + hold.lzt
  239. del /q hold.lzt
  240. return
  241. :cstart
  242. if not exist zcheck.cfg goto v13
  243. set wd=%@line[zcheck.cfg, 0]
  244. set exd=%@line[zcheck.cfg, 1]
  245. return
  246. :arg
  247. iff %# == 2 then
  248. set wd=%1
  249. set exd=%1
  250. elseiff %# == 1 then
  251. set wd=%1
  252. set exd=%1
  253. endiff
  254. return
  255. :argd
  256. set wd=%_cwd
  257. set exd=%_cwd
  258. return
  259. :clean
  260. pushd %[exd]
  261. if isdir %[exd]\$$$~Z erase $$$~Z\*.* /s/x/y
  262. popd
  263. if exist hold.lzt del /q hold.lzt
  264. if exist ext.lzt del /q ext.lzt
  265. if exist zdir$.lzt del /q zdir$.lzt
  266. return
  267. :unself
  268. if %[slf] == 1 popd
  269. cls %[sfgc] on %[sbgc]
  270. endlocal
  271. return
  272. :qsel
  273. gosub v11
  274. if %[rs] gt 0 goto qt1
  275. goto qt
  276. :qt
  277. gosub clean
  278. gosub unself
  279. quit 0
  280. :qt1
  281. gosub clean
  282. gosub unself
  283. echo Zcheck has terminated with an errorlevel of  1
  284. quit 1
  285. :qt2
  286. gosub clean
  287. gosub unself
  288. echo Zcheck has terminated with an errorlevel of  2
  289. quit 2
  290. :qt3
  291. gosub clean
  292. gosub unself
  293. echo Zcheck has terminated with an errorlevel of  3
  294. quit 3
  295. :qt4
  296. cls %[sfgc] on %[sbgc]
  297. endlocal
  298. echo File %@upper[ZCHECK.BTM] not found on path or in current directory
  299. quit 1
  300. :qt5
  301. gosub clean
  302. gosub unself
  303. echo Zcheck has terminated with an errorlevel of  5
  304. quit 5
  305. :help
  306. cls
  307. screen 4 4 usage zcheck [c][z][?][h][H][error] [d:][path1] [d:][path2]
  308. screen 6 4 where [d:] is the drive
  309. screen 7 4 [path1] is the full path to where the ZIP files are located
  310. screen 8 4 [path2] is the full path to where the ZIP files are to be extracted
  311. screen 9 4 'c' causes ZCHECK to write the drive and paths that follow
  312. screen 10 15 to the file ZCHECK.CFG
  313. screen 11 4 'z' causes ZCHECK to use the file ZCHECK.CFG
  314. screen 12 4 '?' 'h' 'H' provide this screen
  315. screen 13 4 'error' provides a list of error codes
  316. screen 15 4 use one drive and path to set both the same
  317. screen 17 4
  318. quit 6
  319. :erhelp
  320. cls
  321. screen 4 4 ERRORLEVEL 0 Normal Termination NO virus found
  322. screen 5 4 ERRORLEVEL 1 Normal Termination VIRUS found
  323. screen 6 4 ERRORLEVEL 2 Terminated by user
  324. screen 7 4 ERRORLEVEL 3 Terminated by ZCHECK
  325. screen 8 4 ERRORLEVEL 4 Terminated with an internal failure
  326. screen 9 4 ERRORLEVEL 5 Insufficient environment to start
  327. screen 10 4 ERRORLEVEL 6 Normal Termination Help or Error list accessed
  328. screen 11 4
  329. quit 6
  330.