home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / podstawy / dos / 4dos / 4uzytki / ez-btm11.exe / DES.BTM < prev    next >
Text File  |  1994-05-05  |  10KB  |  417 lines

  1. : DES.BTM
  2. : A library of routines for handling 4dos descriptions and
  3. : DESCRIPT.ION files.
  4. :
  5. : Itamar Even-Zohar, (itamarez@plato.tau.ac.il)
  6. : Last edited September 5, 1992 and December 9, 1993
  7. :
  8. : Type DES for information.
  9. :---------------------------------------------------------------
  10. if "%1" == "" goto CONTENTS
  11. goto begin
  12.  
  13. :contents
  14. cls
  15. Text
  16.  
  17.  
  18. Usage: DES function [options]
  19.  
  20. where function stands for
  21.  
  22. h or help <command>........... Explanations on each of the following
  23.  
  24. dsc <filespecs> [>output] .... Shows filespecs with descriptions, no path
  25. dscp <filespecs> [>output] ... Shows filespecs with descriptions, including
  26.                                path
  27.  
  28. gldsc <filespecs> ............ Globally collects specified filespecs with
  29.  (or globdesc)                 their descriptions from the entire disk,
  30.                                redirecting results to an output file
  31.  
  32. desc [/L|/H] ................. Finds all undescribed files and lets you
  33.                                either describe them one by one, or (with /L)
  34.                                via a batch file created by it.
  35.  
  36. endtext
  37.  
  38. echo.
  39. inkey /K"YN[ESC] [Enter]" Show more? (Y or Enter or Space | N or ESC) %%rep
  40. set rep=%@upper[%rep]
  41. iff %rep == %@char[27] .or. %rep == N then Quit
  42. elseiff %rep == Y .or. %rep == @28 .or. %rep == @57 then
  43. goto more_text
  44. endiff
  45.  
  46. :more_text
  47. cls
  48. text
  49.  
  50.  
  51. zip-alld|zipad .............. Creates a zip archive on specified drive for
  52.                               all DESCRIPT.ION files on current disk
  53. desclist|deli  .............. Makes a list of all DESCRIPT.ION files on
  54.                               disk, then calls list
  55. zip-desc|zipd  .............. Creates a zip archive on specified drive for
  56.                               all DESCRIPT.ION files listed in DESCRIPT.LST
  57.                               (created by DESCLIST)
  58. endtext
  59. quit
  60.  
  61. :begin
  62. goto %1
  63. quit
  64.  
  65. :HELP
  66. :H
  67. call EX-HLP %2
  68. quit
  69.  
  70. :--------------Displaying files with descriptions
  71. :dsc_file
  72. :dsc
  73.  
  74. shift
  75.  
  76. if .%1==. goto dsc_help
  77.  
  78. setlocal
  79.  
  80. :descriptions
  81.   for %f in (%1) (
  82.     iff not "%@descript[%f]"=="" then
  83.       echo %f %@descript[%f]
  84.     else
  85.       screen %_row 0
  86.     endiff
  87.   )
  88.  
  89. endlocal
  90. quit
  91.  
  92. :dsc_help
  93. ex h dsc
  94. quit
  95. :--------------------------descriptions, with path
  96. :dscfp
  97. :dscp
  98. : Show filespecs with descriptions, including path
  99. shift
  100.  
  101.   for %f in (%1) (
  102.     iff not "%@descript[%f]"=="" then
  103.       echo %@full[%f] %@descript[%f]
  104.     else
  105.       screen %_row 0
  106.     endiff
  107.   )
  108. quit
  109.  
  110. :-----Globally display filenames with descriptions
  111. :gldsc
  112. :globdesc
  113. : Globally collects specified filenames with their descriptions from
  114. : the entire disk and redirects results to an output file.
  115. shift
  116.  
  117. if .%1==. goto help_gldsc
  118.  
  119. pushd \
  120.  
  121. setlocal
  122. Call settemp.btm
  123.  
  124. set outfn=%temp%%0.lst
  125. echo Working ...
  126.  
  127. (echo A list of all %@upper[%1] files on disk with their desriptions^
  128. echo.^
  129. ) >%outfn
  130.  
  131. :gl
  132. global /iq call des dscfp %1 >&>nul >>%outfn
  133.  
  134. list %outfn
  135. endlocal
  136.  
  137. popd
  138. quit
  139.  
  140. :help_gldsc
  141. ex h gldsc
  142. quit
  143.  
  144. :----------------------Describe undescribed files
  145. :desc
  146. : == DESC.BTM
  147. :    Finds all _undescribed_ files and lets you either (1) describe
  148. :    them one by one, or, with the /L switch, (2) via a batch file
  149. :    created by it for your handling. When you have edited this file,
  150. :    running it will add all of the desired descriptions.
  151. :   Note: Adapt the name of the editor above ^^^^^ below.
  152. :   ====
  153. :----------------------
  154. shift
  155.  
  156. setlocal
  157. set und=addesc.btm
  158. set edt=ex ed
  159. rem     ^^^^^ this calls a sub-program in EX, calling file via selected
  160. rem           editor. Either put your preferred editor name here, or
  161. rem           in EX.BTM.
  162.  
  163. iff exist %und then
  164.  del /q %und
  165. endiff
  166.  
  167. iff %@index[%1,h] ge 0 then
  168.   goto help_desc
  169. endiff
  170.  
  171. :desc_list
  172. iff (%1)==(/l) then (echo @echo off^
  173. echo rem  ADDESC.BTM adds descriptions to undescribed files
  174. echo rem  Put the desired description between the quotes ("").^
  175. echo rem  Delete undesired filenames, then save & run batch^
  176. echo echo Adding now descriptions. Wait ...^echo echo.^echo echo on^
  177. echo :
  178. echo :begin_list^
  179. ) >%und
  180. endiff
  181.  
  182. :check_desc
  183.   for %f in (*.*) (
  184.     iff not "%@descript[%f]"=="" then
  185.       screen %_row 0
  186.     else
  187.       gosub descA
  188.     endiff
  189.   )
  190.  
  191. iff exist %und then set ech=
  192.  %edt %und
  193.  goto end
  194.  else
  195. set ech=echo %0 terminated
  196.  endiff
  197.  
  198. :end
  199. %ech
  200. endlocal
  201. quit
  202.  
  203. :--(describing files one by one)----
  204. :descA
  205. iff (%1)==(/l) then echo describe %@lower[%f] "" >> %und
  206.   return
  207.   endiff
  208.  
  209. inkey /K"YNQH" Describe %f (Y/N/Q or H[elp])? %%rep
  210.   iff %rep == Y then
  211.     gosub desc2
  212.     return
  213.   elseiff %rep == N then
  214.     return
  215.   elseiff %rep == H then
  216.     goto help_desc
  217.   elseiff %rep == Q then
  218.     set ech=echo stopped by user
  219.     goto end
  220. endiff
  221.  
  222. :desc2
  223. screen %@eval[%_row-1] 0
  224. describe %f
  225. return
  226. :-------help and selecting options-----
  227. :help_desc
  228. cls
  229. screen 2 0
  230. text
  231.   syntax:
  232.     DESC [/L|/H]
  233.      where
  234.     /L = 'make list'
  235.     /H = Help & options
  236.  
  237.   You can type descriptions for the undescribed files one file
  238.   after the other, or generate a batch file for all undescribed
  239.   files, ready for running.
  240.                Type L  for generating a list
  241.                Type C  for file by file describing
  242.                Type Q  to quit
  243. endtext
  244. screen %@eval[%_row+1] 2
  245. inkey /K"clq" Your choice? (C/L/Q) %%rep
  246.     iff %rep == Q then set ech=echo stopped by user^goto end
  247. elseiff %rep == C then goto check_desc
  248. elseiff %rep == L then set 1=/l ^goto :desc_list
  249. endiff
  250.  
  251. :--------------------Descript.ion zipped directly
  252. :zip-alld
  253. :zipad
  254. : Creates a ZIP archive on specified drive for all DESCRIPT.ION files on
  255. : current disk, using PKZIP's ability to handle hidden files.
  256. : No list need be pre-created, unless, of course, you wish to edit such
  257. : a list before archiving. In that case, use my subprogram DELI, then ZIPD.
  258.  
  259. shift
  260. setlocal
  261.  
  262. iff "%1"=="" then
  263. inkey On which drive create ZIP archive (type letter only)? %%1
  264. endiff
  265.  
  266. set dri=%1
  267.   iff %@index[%dri,:] eq 1 then
  268.    set dri=%@substr[%dri,0,1]
  269.   endiff
  270. set zbup=pkzip -ub%_lastdisk: -P
  271.  
  272. pushd %_disk:\
  273. echo.
  274. echo Now creating ZIP archive for descript.ion files on drive %@upper[%dri:]
  275. %zbup -r -wH %dri:descript descript.ion >& nul
  276.  gosub success
  277. goto last_step
  278. quit
  279.  
  280. :---------------------------DECRIPT.ION to a list
  281. :DESCLIST
  282. :DELI
  283. :    Note: No need to create this list if all you want is backing up
  284. :          your decript.ion files without editing the list. Use ZIPALD
  285. :          for directly zipping all descript.ion files.
  286.  
  287. pushd c:\
  288. echo Creating list of DESCRIPT.ION files
  289. echo.
  290.  
  291. setlocal
  292.  
  293. :create_list
  294. rem  Create list of all descript.Ion file, even if hidden, using a routine
  295. rem  proposed by Robert Chung (Chung @QAL.QAL.BERKELEY.EDU) in his
  296. rem  WHICH.BTM (4DOS command interpreter <4DOS@INDYCMS.BITNET>, 18 Jun 1992).
  297. rem  This has made it possible to not use Ledbetter's procedure.
  298. :
  299. (for %drv in (%_disk) do (dir /sfla:h %drv:\descript.ion)) > %_disk:\descript.lst
  300.  
  301. gosub Buerg
  302. :    (check if Buerg's LIST exists)
  303.  
  304. :editor?
  305. rem   Checking if your editor / wordprocessor loaded.
  306. rem   Here Nota Bene is checked. Change to suit your
  307. rem   preferrence, or leave as is if you are satisfied
  308. rem   with the alternative (Buerg's LIST, or 4DOS LIST
  309. rem   command).
  310. iff %pgm=nb then
  311. rem      ^^ change "pgm=" to your editor /wordprocessor
  312.     gosub NBFI
  313.     rem      NBFI checks if NB file CA.RN exists. This applies only to
  314.     rem      Nota Bene users.
  315.  
  316. keystack 0 "%cal %_disk:\descript.lst" enter^@exit
  317.  
  318. else %list %_disk:\descript.Lst
  319. endiff
  320.  
  321. endlocal
  322. popd
  323. quit
  324.  
  325. :--------------------------Descriptions > ZIPfile
  326. :zip-desc
  327. :Zipd
  328. : Creates a zip archive on specified drive for all DESCRIPT.ION
  329. : files listed in c:\DESCRIPT.LST. The list can be created with
  330. :: DES DESCLIST.
  331. : If you have not created a list, nor wish to create one (for editing
  332. : before archiving), use ZIP-ALLD / ZIPAD instead of this.
  333. : Note: If you fail to indicate the drive, you will be asked by the program
  334. : to type it.
  335. : USAGE: DES ZIP-DESC [d[:]]
  336. :        (meaning: typing drive, or colon are optional)
  337.  
  338. shift
  339. setlocal
  340.  
  341. iff "%1"=="" then
  342. inkey On which drive create ZIP archive (type letter only)? %%1
  343. endiff
  344.  
  345. set dri=%1
  346.   iff %@index[%dri,:] eq 1 then
  347.    set dri=%@substr[%dri,0,1]
  348.   endiff
  349. set zbup=pkzip -ub%_lastdisk: -P
  350.  
  351. iff exist %_disk:\DESCRIPT.LST then
  352. pushd %_disk:\
  353. echo.
  354. echo Now creating ZIP archive for descript.ion files on drive %@upper[%dri:]
  355. %zbup -wH %dri:descript @c:\descript.Lst >& nul
  356. gosub success
  357.   else
  358. echo.
  359. echo %_disk:\DESCRIPT.LST not found; Use DES DESCLIST to create it
  360.   unset /q 1
  361.   quit
  362.   endiff
  363. endiff
  364.  
  365. :last_step
  366. cls
  367. echo.
  368. %ech
  369. echo.
  370. dir /K /M /L %dri:descript.Zip
  371. popd
  372. endlocal
  373.  unset /q 1
  374. quit
  375. :------sub-routine---
  376. :success
  377. iff errorlevel gt 0 .and. errorlevel lt 12 .Or. errorlevel gt 12 then
  378. set ech=Echo ZIP was not created
  379. elseIff errorlevel eq 12 then
  380. set ech=Echo No files to update
  381. else
  382. set ech=echo DESCRIPT.ZIP created / updated on %@upper[%dri:]
  383. endiff
  384. return
  385. quit
  386.  
  387. :-----------------------------end of sub-programs
  388.  
  389. :=================SUB-ROUTINES===================
  390.  
  391. :NBFI
  392. iff not "%@search[CA.RN]" == "" then
  393. set cal=run ca.rn
  394.  else
  395. set cal=ca
  396.  endiff
  397. return
  398. :-------------------
  399. :Buerg
  400. iff not "%@alias[list]" == "" then
  401. unalias list
  402. endiff
  403. gosub ex_list?
  404. return
  405.  
  406. :ex_list?
  407. rem     Checking if Buerg's LIST exists; else registers to use
  408. rem     4DOS internal command ("list").
  409. :
  410. iff not "%@search[list.com]" == "" then
  411. set list=%@search[list.com]
  412.  else
  413. set list=list
  414.  endiff
  415. return
  416. :-------------------
  417.