home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / podstawy / dos / 4dos / 4uzytki / pkbtm111.exe / PK.BAT < prev    next >
DOS Batch File  |  1992-02-26  |  15KB  |  689 lines

  1. @REM Pk.btm v1.11 (C) 1991,1992 FMMO Publications informatiques
  2. @REM [Unregistered Shareware Evaluation Copy]
  3. @REM Please make sure you distrubute this file as a single package with the
  4. @REM following files: desclist.fmm
  5. @REM                  fmmhost.bbs
  6. @REM                  menudisp.fmm
  7. @REM                  pkvar.lst
  8. @REM                  pkbtm.doc
  9. @REM                  magicn.fmo
  10.  
  11. @Echo off
  12.  
  13. if not "%cwd"=="" goto not4dos
  14. if %_4ver LT 4.0 goto notv40
  15.  
  16. Loadbtm on
  17. Setlocal
  18.  
  19. REM **************************************************************
  20. REM Make sure you set the correct path !
  21.  
  22. Set /r c:\batch\pkbtm\pkvar.lst
  23.  
  24. REM **************************************************************
  25.  
  26. %keystackpath >& nul
  27. setdos /M0
  28.  
  29. If "%1" ne "" goto fil_sel_by_cmdline
  30.  
  31. :pick
  32. cls
  33. screen 0 0 Working...
  34. set pkfile=!
  35. set isitadir=no
  36. >%processfile
  37. set currentpath=%_cwd
  38. select /oe set isitadir=(*.*)
  39. iff %isitadir==. then
  40. goto pick
  41. else
  42. iff %isitadir==no then
  43. gosub dispabort
  44. %afterquit
  45. quit
  46. else
  47. cd %isitadir >&> %processfile
  48. endiff
  49. iff %_? ne 0 then
  50. echo Working...
  51. type %processfile |eset pkfile >nul
  52. keystack @83 @83 @83 @83 @83 @83 @83 @83 @83 @83 @83 @83 @83 @83 @79 8 13
  53. eset pkfile >nul
  54. goto outpick
  55. endiff
  56. goto pick
  57.  
  58.  
  59. :fil_sel_by_cmdline
  60. Set pkfile=%1
  61. :outpick
  62. If not "%@ext[%pkfile]"=="zip" gosub zipthis
  63. Set pkfile=%@full[%@path[%pkfile]%@name[%pkfile].zip]
  64. If "%flagforlogo"=="no" goto nologo
  65. Text
  66.  
  67. Putting logo into file ...
  68.  
  69. Endtext
  70. set error=%@exec[%pkzippath %@full[%pkfile] -z < %logofile]
  71. If %error ne 0 goto decompressing_error
  72.  
  73. :nologo
  74. If "%@descript[%@full[%pkfile]]"=="" Describe %@full[%pkfile] "%nodesc"
  75.  
  76. :redisplay
  77.  
  78. Cls
  79. Gosub showtitle
  80.  
  81. Screen 6 0
  82. Text
  83.  Current path is             :
  84.  Current working file is     :
  85.  Current file description is :
  86. Endtext
  87.  
  88. Drawbox 4 0 10 77 1  blu on bla
  89. Scrput 6 31 bri whi on bla %_cwd
  90. Scrput 7 31 bri whi on bla %@full[%pkfile]
  91. Scrput 8 31 bri whi on bla %@descript[%@full[%pkfile]]
  92. if exist %downloaddirtry\*.* scrput 2 0 blink bri green on bla There is some files in %downloaddirtry
  93. Gosub menu
  94. Goto out
  95.  
  96. :menu
  97.  
  98. Screen 11 1 please select what you want to do |
  99.  
  100. Text
  101.  
  102.  
  103.  
  104.        Unarchive current file to
  105.        Clear                                                    
  106.        Update description
  107.        Select another file
  108.        Unarchive to a specified directory
  109.        View current file (for ZIP only)
  110.        Scan file for viruses
  111.        Unarchive a specified file in this archive
  112. Endtext
  113. scrput 22 7 bri cyan on bla Simple file operations (submenu)
  114. Scrput 14 33 bri yellow on bla %downloaddirtry
  115. Scrput 15 13 bri yellow on bla %downloaddirtry
  116.  
  117. Drawbox 13 5 23 79 1 blue on bla
  118.  
  119. Set answer=%@substr[%@select[%menudisp,14,0,%@eval[%_rows-1],2],1,1]
  120. Iff "%answer" ge "0" .and. "%answer" le "8" then
  121. goto %@word[%answer,explode deldown describe select unzip view scanfile unarcspecified operations]
  122. Else
  123. Cls
  124. Gosub dispabort
  125. %afterquit
  126. Quit
  127. Endiff
  128.  
  129. :zipthis
  130.  
  131.  if  "%@ext[%pkfile]"=="lzh" goto lzhzip
  132.  if  "%@ext[%pkfile]"=="arc" goto arczip
  133.  if  "%@ext[%pkfile]"=="arj" goto arjzip
  134.  if  "%@ext[%pkfile]"=="zoo" goto zoozip
  135.  
  136. Gosub redisplay
  137. Return
  138.  
  139. :lzhzip
  140. Gosub maketempdir
  141. set processlzhfile=%@full[%pkfile]
  142. cdd %tempdir
  143. Gosub showtitle
  144. text
  145.  
  146. endtext
  147. if exist %lzhpath %lzhpath e %@full[%processlzhfile]
  148. If %? ne 0 goto decompressing_error
  149. Gosub filter
  150. Gosub scanit
  151.  
  152. Del %@full[%processlzhfile]
  153.  
  154. %pkzippath %downloaddir\%@name[%pkfile].zip %tempdir\*.* -m
  155. If %? ne 0 goto decompressing_error
  156. Cdd %downloaddir
  157. *Rd %tempdir
  158. Return
  159.  
  160. :zoozip
  161. Gosub maketempdir
  162. set processzoofile=%@full[%pkfile]
  163. cdd %tempdir
  164. Gosub showtitle
  165. text
  166.  
  167. endtext
  168. if exist %zoopath %zoopath e %@full[%processzoofile]
  169. If %? ne 0 goto decompressing_error
  170. Gosub filter
  171. Gosub scanit
  172.  
  173. Del %@full[%processzoofile]
  174.  
  175. %pkzippath %downloaddir\%@name[%pkfile].zip %tempdir\*.* -m
  176. If %? ne 0 goto decompressing_error
  177. Cdd %downloaddir
  178. *Rd %tempdir
  179. Return
  180.  
  181. :arjzip
  182. gosub showtitle
  183. Gosub maketempdir
  184. set processarjfile=%@full[%pkfile]
  185. Cdd %tempdir
  186. Gosub showtitle
  187. text
  188.  
  189. endtext
  190. if exist %arjpath %arjpath e %@full[%processarjfile]
  191. If %? ne 0 goto decompressing_error
  192. Gosub filter
  193. Gosub scanit
  194. Del %@full[%processarjfile]
  195. %pkzippath %downloaddir\%@name[%pkfile].zip %tempdir\*.* -m
  196. If %? ne 0 goto decompressing_error
  197. Cdd %downloaddir
  198. *Rd %tempdir
  199. Return
  200.  
  201. :arczip
  202. Gosub maketempdir
  203. set processarcfile=%@full[%pkfile]
  204. Cdd %tempdir
  205. Gosub showtitle
  206. Text
  207.  
  208. Endtext
  209. if exist %arcpath %arcpath %@full[%processarcfile]
  210. If %? ne 0 goto decompressing_error
  211. Gosub filter
  212. Gosub scanit
  213. Del %@full[%processarcfile]
  214. %pkzippath %downloaddir\%@name[%pkfile].zip %tempdir\*.* -m
  215. If %? ne 0 goto decompressing_error
  216. Cdd %downloaddir
  217. *Rd %tempdir
  218. Return
  219.  
  220. Return
  221.  
  222.  
  223. :unarcspecified
  224. cls
  225. Echo Working...
  226. if exist e:\arcfmmo.lst del e:\arcfmmo.lst >nul
  227. set error=%@exec[ %pkzippath -vc %@full[%pkfile] >> %arcfmmo ]
  228. gosub showtitle
  229. set pickazip=%@select[%arcfmmo,3,0,%@eval[%_ROWS-1],79,Pick a line which has a zip file on it !]
  230. iff not "%pickazip"=="" then
  231. cls
  232. else
  233. goto redisplay
  234. endiff
  235.  
  236. set pksel=%@substr[%pickazip,60,12]
  237.  
  238. iff "%viewtolist"="on" then
  239. cls
  240. Text
  241. Gathering selected information ...
  242.  
  243. Endtext
  244. set error=%@exec[ %pkunzippath %@full[%pkfile] %pksel -c | %listpath /s]
  245. If %error ne 0 goto decompressing_error
  246. set viewtolist=off
  247. goto operations
  248. endiff
  249.  
  250. cls
  251. gosub showtitle
  252. Scrput 3 0 whi on bla The file wich you chosed to process is :
  253. Scrput 3 41 cyan on bla %pksel
  254. Screen 5 0
  255. Inkey /K"yn" Do you want to extract it from %pkfile (y/n) ? %%answer
  256. If not "%answer"=="y" goto redisplay
  257. Text
  258.  
  259. Hope you know what you're doing...
  260.  
  261. Endtext
  262. set error=%@exec[ %pkunzippath %@full[%pkfile] %pksel %downloaddirtry ]
  263. If %error ne 0 goto decompressing_error
  264. set error=%@exec[ %Scanpath  %downloaddirtry\*.* %scanopt ]
  265. If %error ne 0 goto dispinfected
  266. Cdd %downloaddirtry
  267. Echo This is the contents of %downloaddirtry
  268. Dir %diropt %downloaddirtry
  269. Pushd
  270. Goto out
  271. Endiff
  272.  
  273. :scanfile
  274. Cls
  275. Text
  276. This will scan an archive but will not see trough it ...
  277.  
  278. Endtext
  279. Echo Scanning %@full[%pkfile] for viruses ...
  280. Text
  281.  
  282. Endtext
  283. %Scanpath  %@full[%pkfile] %scanopt
  284. If %? ne 0 gosub dispinfected
  285. goto redisplay
  286.  
  287. :dispinfected
  288. Text
  289. This archive seems to be infected with a virus
  290. Watch Out! The original file is still in it's original form
  291. Quitting...
  292. Endtext
  293. del %tempdir\*.* /y /q
  294. cdd %downloaddir
  295. *rd %tempdir
  296. goto out
  297.  
  298. :select
  299. Goto pick
  300.  
  301. :explode
  302. Cls
  303. set error=%@exec[ %Pkunzippath %@full[%pkfile] %downloaddirtry ]
  304. If %error NE 0 goto decompressing_error
  305. set error=%@exec[ %Scanpath %downloaddirtry\*.* %scanopt ]
  306. If %error ne 0 goto dispinfected
  307. Dir %diropt %downloaddirtry
  308. popd *
  309. cdd %downloaddirtry
  310. Pushd %downloaddirtry
  311. Goto out
  312.  
  313. :operations
  314. Cls
  315. Gosub showtitle
  316. Scrput 12 5 bri cyan on bla -Press Escape to Go Back to Main Menu-
  317. Screen 6 0
  318. Text
  319.  current path is             :
  320.  current working file is     :
  321.  current file description is :
  322. Endtext
  323.  
  324. Drawbox 4 0 10 77 1  blu on bla
  325. Scrput 6 31 bri whi on bla %_cwd
  326. Scrput 7 31 bri whi on bla %@full[%pkfile]
  327. Scrput 8 31 bri whi on bla %@descript[%@full[%pkfile]]
  328. Screen 11 1 please select what you want to do |
  329.  
  330. Text
  331.  
  332.  
  333.  
  334.        Delete file
  335.        View file using e.g. Chris Buerg's List.com
  336.        Shell to command interpreter
  337.        Explode a selected file to the file viewer
  338.        Archive selected files in a file
  339.        Empty slot
  340.        Empty slot
  341.        Empty slot
  342.        Empty slot
  343. Endtext
  344.  
  345. Drawbox 13 5 23 79 1 blue on bla
  346. Set answer=%@substr[%@select[%menudisp,14,0,%@eval[%_rows-1],2],1,1]
  347. Iff "%answer" ge "0" .and. "%answer" le "8" then
  348. goto %@word[%answer,deletefile viewbuerg shellto4DOS viewflag archiveme emptyslot emptyslot emptyslot]
  349. Else
  350. Cls
  351. Goto redisplay
  352. Endiff
  353.  
  354.  
  355. :archiveme
  356. cls
  357. gosub showtitle
  358. screen 3 0
  359. text
  360.  
  361. Intructions on how to use this function:
  362.  
  363. 1st Navigate trough directories and select files by pressing enter, or select
  364.     multiple files by presing spacebar and enter. If you select directories,
  365.     the algorythm will automatically change you to the first directory selected.
  366.  
  367. 2nd Press escape when you are done. Then you will be prompted for 2 things, if
  368.     you want to move those selected files in the archive, and after the name
  369.     of the archive.
  370.  
  371. Endtext
  372. pause
  373. cls
  374. screen 0 0 Working...
  375. >%dirlist
  376. >%toziplst
  377. :redisp
  378. >%liste
  379. select /oe echo (*.*) >> %liste
  380. screen 0 0 Working...
  381. text
  382.  
  383. endtext
  384. if %@line[%liste,0] eq **eof** goto exit
  385. set numoflin=%@eval[%@lines[%liste]-1]
  386. set compte=-1
  387. :loop
  388. set compte=%@eval[%compte+1]
  389. iff isdir %@line[%liste,%compte] then
  390. echo %@line[%liste,%compte] >> %dirlist
  391. else echo %@full[%@line[%liste,%compte]] >> %toziplst
  392. endiff
  393. iff not %compte GT %numoflin goto loop
  394. if %@filesize[%dirlist] eq 0 goto redisp
  395. iff %@line[%dirlist,0] eq . then
  396. >%dirlist
  397. goto redisp
  398. else cd %@line[%dirlist,0]
  399. >%dirlist
  400. goto redisp
  401. endiff
  402. :exit
  403. text
  404.  
  405. endtext
  406. inkey /k"yn" Do you want to move the selected files in the archive (Y/N) ? : %%moveyn
  407. text
  408.  
  409. endtext
  410. input How will you name the archive ? : %%filename
  411. if "%filename" eq "" goto operations
  412. iff %moveyn eq y then
  413. set moveyn=-m
  414. else unset moveyn
  415. endiff
  416. set error=%@exec[ pkzip %moveyn %filename @%toziplst ]
  417. unset moveyn
  418. If %error ne 0 goto decompressing_error
  419. goto operations
  420.  
  421. :viewflag
  422. set viewtolist=on
  423. goto unarcspecified
  424.  
  425. :deletefile
  426. cls
  427. Echo Deleting %@full[%pkfile] ..
  428. Del %@full[%pkfile] >nul
  429. goto select
  430.  
  431. :movefile
  432. :copyfile
  433. :edit file
  434. :execute_file
  435.  
  436. :shellto4dos
  437. set result=%@exec[%comspec]
  438. goto operations
  439.  
  440. :viewbuerg
  441. iff exist %listpath then
  442. set result=%@exec[ %listpath %@full[%pkfile] ]
  443. endiff
  444. Goto operations
  445.  
  446. :emptyslot
  447. cls
  448. Text
  449.  
  450. This is an empty slot so you could put something of your own !
  451. If you register, we will be glad to send you some usable code
  452. to fill all those empty slots and more !
  453.  
  454. Just shell and go read pkbtm.doc
  455. Endtext
  456.                                                                                       REM Remember, the source is also available for a light supplement of 10$  :-))
  457. Pause
  458. Goto operations
  459.  
  460. :describe
  461. Keystack "%@descript[%@full[%pkfile]]"
  462. :reask
  463. Scrput 3 0 bri red on bla Enter the new description.  Press ESC and ENTER to be prompted for a choice !
  464. Screen 9 30 └────────────────────────────────────────┘
  465. Screen 8 31
  466. Input %%newdes
  467. Iff %@len[%newdes] gt 40 then
  468. Keystack "%newdes"
  469. Goto reask
  470. Endiff
  471.  
  472. :descentered
  473. Iff "%newdes" ne "" then
  474. Describe %@full[%pkfile] ""
  475. Echo %newdes | describe %@full[%pkfile] >nul
  476. goto redisplay
  477. Endiff
  478. cls
  479. set newdes=%@select[%descriptionlist,2,0,24,79,Please Select a Description Among These !]
  480. If not "%newdes" ne "" set newdes=%nodesc
  481. goto descentered
  482.  
  483. :deldown
  484. Cls
  485. Echo This is the content of %downloaddirtry
  486. Text
  487.  
  488. Endtext
  489. Dir %diropt %downloaddirtry
  490. Text
  491.  
  492. Endtext
  493. Inkey /K"yn" Do you want to delete the content of %downloaddirtry (y/n) : %%answer
  494. Iff "%answer"=="y" then
  495. Text
  496.  
  497. Deleting...
  498. endtext
  499. set result=%@exec[%deleteprotect_off >& nul ]
  500. If exist %downloaddirtry\*.* del %downloaddirtry\*.* /y /q >& nul
  501. set result=%@exec[%deleteprotect_on >& nul ]
  502. Goto redisplay
  503. Endiff
  504. text
  505.  
  506. endtext
  507. Inkey /K"yn" Do you want to move that somewhere ? (y/n) : %%answer
  508. If "%answer"=="n" goto redisplay
  509. Text
  510.  
  511. Endtext
  512. Input Where do you want to move that (ENTER to quit): %%where
  513. If "%where"=="" goto redisplay
  514. Iff not isdir %where then
  515. Text
  516.  
  517. You need to specify an existing directory !
  518. I'll try to create it ...
  519.  
  520. Endtext
  521. Goto makedir
  522. Endiff
  523. Echo Moving files to %where ...
  524. *Move %downloaddirtry\*.* %where
  525. Iff %_? NE 0 then
  526. Text
  527. An error as occured when moving files ..
  528. Quitting...
  529. Endtext
  530. %afterquit
  531. Cancel
  532. Else
  533. Goto redisplay
  534. Endiff
  535.  
  536. :makedir
  537. *Md  %where >& nul
  538. Set error=%_?
  539. Text
  540.  
  541. Endtext
  542. If "%error" != "0" goto imposs_dir
  543.  
  544. Echo The directory %where was succesfully created !
  545. Echo Moving files to %where ...
  546. Text
  547.  
  548. Endtext
  549. *Move %downloaddirtry\*.* %where
  550. Goto redisplay
  551.  
  552. :imposs_dir
  553. Text
  554.  
  555. 4DOS is not able to create this directory :-)
  556. Please revise 4DOS.DOC !
  557.  
  558. Endtext
  559. Pause
  560. Goto redisplay
  561.  
  562. :view
  563. Cls
  564. Echo Gathering information on zip file...
  565. Iff "%@ext[%@full[%pkfile]]"=="zip" then
  566. set error=%@exec[ %pkzippath -vc %@full[%pkfile] | %listpath /s ]
  567. else
  568. Text
  569.  
  570. Not a zip archive ...
  571. Endtext
  572. pause
  573. endiff
  574. @goto redisplay
  575.  
  576. :unzip
  577. Cls
  578. Input Where do you want to unzip %pkfile : %%where
  579. If "%where"=="" goto redisplay
  580. If isdir %where goto dirok
  581. *md %where >& nul
  582. Set error=%_?
  583. Text
  584.  
  585. Endtext
  586. If %error != 0 goto imposs_dir
  587. Text
  588.  
  589. Endtext
  590. Echo The directory %where was succesfully created !
  591.  
  592. :dirok
  593. Text
  594.  
  595. Endtext
  596. Echo Unzippping files to %where ...
  597. set error=%@exec[%Pkunzippath %@full[%pkfile] %where]
  598. If %error NE 0 goto decompressing_error
  599. %Scanpath  %where /d %scanopt
  600. If  %? ne 0 goto dispinfected
  601. Cdd %where
  602. Cls
  603. Echo This is the content of %where
  604. Dir %diropt %where >&>nul
  605. Pushd
  606. Goto out
  607.  
  608. :upload
  609. *Copy %@full[%pkfile] %uploaddir
  610. Goto out
  611.  
  612. :acm
  613. Cls
  614. Text
  615. Loading arcmaster....
  616. Endtext
  617. %arcmaster
  618. Goto redisplay
  619.  
  620. :decompressing_error
  621. Text
  622. 
  623. An error occured when processing this file.
  624. Please fix the problem.
  625. Endtext
  626. %afterquit
  627. Cancel
  628.  
  629.  
  630. :dispabort
  631. Text
  632. [UNREGISTERED EVALUATION COPY]
  633. Thanks for evaluating FMMO's software.
  634. Have a nice 4DOS !
  635. Endtext
  636. Return
  637.  
  638. :scanit
  639. %Scanpath %tempdir %scanopt
  640. If  %? ne 0 goto dispinfected
  641. Return
  642.  
  643. :filter
  644. If exist readmy.bbs del readmy.bbs
  645. If exist readme.ros del readme.ros
  646. If exist fmmobbs.doc del fmmobbs.doc
  647. Return
  648.  
  649. :maketempdir
  650.  
  651. If not isdir %tempdir *md %tempdir
  652.     iff %_? ne 0 then
  653.         text
  654.         Fatal error
  655.         Could not create directory
  656.         endtext
  657.         goto out
  658.     endiff
  659. Return
  660.  
  661.  
  662. :showtitle
  663. cls
  664. Scrput 0 0 bri yellow on blu ≡       Pk.Btm v1.11 (C) 1991,1992 FMMO Publications Informatiques Enr.        ≡
  665. Drawhline 1 0 80 1 blu on bla
  666. Return
  667.  
  668. :out
  669. %afterquit
  670. Popd >& nul
  671. quit
  672.  
  673.  
  674. :notv40
  675. Echo Pk.btm is constantly updated to use the latest 4DOS functions.
  676. Echo As of now, the most recent version of 4DOS is the 11-01-91 v4.0 release.
  677. Echo Please read the file dl4dos.fmo for further information on
  678. Echo how to obtain the most recent version of 4DOS.
  679. quit
  680.  
  681. :not4dos
  682. @echo 
  683. @echo 4DOS (tm) is not loaded on your system. This batch file only works with it.
  684. @echo Feel free to download the latest version of 4DOS (tm) of JP Software from
  685. @echo FMMHOST BBS in Sherbrooke, Qc. (819) 820-0590 ANSI,n,8,1 HST 14.4/v.32bis
  686. @echo We are an official 4DOS Distribution Site !
  687. @Echo 1:167/440@fidonet, 81-91-10@nanet, FMMO@DMI.USherb.ca@Internet
  688.  
  689.