home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / podstawy / dos / 4dos / 4uzytki / 4whts10b.exe / WHATIS.BTM next >
Text File  |  1992-10-20  |  3KB  |  123 lines

  1. @echo off^goto start
  2. rem WHATIS 1.0ß by Jouni Vääriskoski (vaarisko@tnclus.tele.nokia.fi)
  3. :help
  4. text
  5.  
  6.  WHATIS - tries to find out what the given command stands for. Version 1.0ß
  7.  
  8.  Usage: WHATIS [/l] <command>
  9.  
  10.  WHATIS searches for internal 4dos commands, aliases, external programs 
  11.  and executable extensions.
  12.  
  13.  If a name of an existing .BAT or .BTM file is given and the /l switch 
  14.  is used WHATIS calls LIST to view the file.
  15.  
  16.  Using wildcards (other than leading '*') in <command> forces WHATIS to
  17.  search for external program files only. The path of the first matching
  18.  filename is used, and all matching files in that directory are processed.
  19.  
  20.  Note: In most cases, "WHATIS list.com" leads to an internal 4dos command 
  21.  "list", since it is the way used by 4DOS when parsing command lines.
  22. endtext
  23. return
  24.  
  25. :start
  26.  
  27. if "%debug" eq "%0" echo on
  28. if %_env lt 150 (echo %@upper[%0]: Not enough free environment space!^quit)
  29.  
  30. setlocal
  31. set list=0
  32.  
  33. :arg_parsing
  34. if "%1" eq "" (gosub help^set Err=2^goto cleanup)
  35. set arg=%1
  36. iff %@index[-/,%@substr[%arg,0,1]] ne -1 then
  37.  set arg=%@lower[%@substr[%arg,1]]
  38.  iff "%arg" eq "?" then
  39.   gosub help^goto cleanup
  40.  elseiff %arg eq l then
  41.   shift
  42.   set list=1
  43.   goto arg_parsing
  44.  else
  45.   echo %@upper[%0]: Invalid switch "/%arg"
  46.   (set Err=2^goto cleanup)
  47.  endiff
  48. endiff
  49.  
  50. set ex=%@upper[%@ext[%1]]
  51. if %@index[%1,.] ge 0 set ex=.%ex
  52. set pa=%@upper[%@path[%1]]
  53. set targ=%@upper[%@name[%1]]
  54.  
  55. echo.
  56. if "%ex" == "" goto noext
  57. if %ex == .COM .or. %ex == .EXE .or. %ex == .BTM .or. %ex == .BAT goto catext
  58.  
  59. iff "%[%ex]" ne "" then
  60.  echo Executable extension = %@upper[%[%ex]]
  61.  iff "%@path[%[%ex]]" == "" then
  62.   where %@name[%[%ex]].%@ext[%[%ex]]
  63.  endiff
  64.  iff not exist %[%ey] then 
  65.   echo Extension program not found
  66.  endiff
  67. else
  68.  iff exist %1 then
  69.   echo %@upper[%1] is not an executable file.
  70.  else
  71.   echo Executable extension or file not found.
  72.  endiff
  73. endiff
  74. goto cleanup
  75.  
  76. :catext
  77. set targ=%targ%%ex%
  78. :noext
  79.  
  80. iff isalias %targ then
  81.   echo 4dos Alias: 
  82.   alias %targ
  83.   goto cleanup
  84. endiff 
  85.  
  86. REM Note: Remove leading "*", if found ("isinternal *dir" returns false!).
  87. iff %@substr[%targ,0,1] eq * then
  88.   set targ=%@substr[%targ,1]
  89. endiff
  90.  
  91. iff isinternal %pa%%targ% then
  92.   REM Note: Above the path, if given, must be included, othervise command 
  93.   REM like "MAN c:\util\list.com" would go into the next iff, because 
  94.   REM "isinternal LIST.COM" returns TRUE! (Bug in 4dos?)
  95.   echo Internal 4dos command
  96.   goto cleanup
  97. endiff
  98.  
  99. iff exist %1 then
  100.  set targ=%1
  101. else
  102.  set targ=%@search[%targ]
  103. endiff
  104.  
  105. iff "%targ" ne "" then
  106.  for %targ in (%targ) do (
  107.   echos %@upper[%targ]
  108.   set desc=%@descript[%targ%]
  109.   iff "%desc" ne "" then
  110.    echo  - %desc
  111.   else
  112.    echo  - no file description.
  113.   endiff
  114.   if %list eq 1 .and. %@index[.bat.btm,.%@ext[%targ]] ne -1 list %targ
  115.  )
  116. else
  117.  echo %@upper[%0]: Not a command, not a file - Check spelling
  118.  (set Err=2^goto cleanup)
  119. endiff
  120.  
  121. :cleanup
  122. quit %Err
  123.