$!------------------------------------------------------------ $! EXTRACT_VMS_PATCHES.COM $! This will go through all of the downloaded patch files $! in a directory and extract the PCSI files. It will $! also create a COM file to perform the installs. $! $! If you pass QUIET in for P1, it will include the two $! logical definitions to prevent the install from asking $! about your system backup and rebooting the system. $! $! After running this program, you may need to adjust the $! order of the patch installations in the created COM file $! to take into account any prerequisites and dependencies. $! $! Always review the README for each patch before installing $! the patch. $!----------------------------------------------------------- $! Create the install COM file $ open/write outfile install_vms_patches.com $! $! Decide whether to run quietly or not $ if p1 .eqs. "QUIET" $ then write outfile "$ define/system no_ask$backup TRUE" $ write outfile "$ define/system no_ask$reboot TRUE" $ write outfile "$!" $ endif $! $! Loop through the current directory and extract files $extract_loop: $ filename = f$search( "*.*" ) $! If blank, we have checked all of the files $ if filename .eqs. "" then goto end_extract_loop $ filetype = f$parse( filename,,, "TYPE" ) $! Check for valid files $ if filetype .eqs. ".PCSI" then goto extract_loop ! Extracted patches $ if filetype .eqs. ".COM" then goto extract_loop ! COM files $! Run the downloaded patch file to extract the actual patch. $! Press enter in response to the destination. $ run 'filename' $! We just want the filename, no extension/directory/disk/node $ filename = f$parse( filename,,, "NAME" ) $! Get the producer $ prodname = f$element( 0, "-", filename ) $! Get the base_system $ basename = f$element( 1, "-", filename ) $! Get the patch name $ patchname = f$element( 2, "-", filename ) $! Get the version of the patch $ version = f$element( 3, "-", filename ) $ version = f$fao( "v!UW.!UW", - f$integer( f$extract( 1, 2, version ) ), - f$integer( f$extract( 3, 2, version ) ) ) $! Write out the install line $ write outfile "$ product install ''patchname'/producer=''prodname'/base_system=''basename'/version=''version'" $! $! Go get the next file $ goto extract_loop $! $end_extract_loop: $! $! If running quietly, then deassign the logicals $ if p1 .eqs. "QUIET" $ then write outfile "$!" $ write outfile "$ deassign/system no_ask$backup" $ write outfile "$ deassign/system no_ask$reboot" $ endif $! $! Close the install COM file that we are creating $ close outfile $! $ exit $!---------------------------------------------------------- $! Patch filename layout and example: $! Layout: producer-base_system-patch_name-version-?-?.* $! Example: DEC-AXPVMS-VMS731_DCL-V0200--4.;1 $! Producer: DEC $! Base_System: AXPVMS $! Patch_Name: VMS731_DCL $! Version: V2.0 $! I do not know what the last two parameters are, so I $! am just ignoring them. I also do not have anything $! official that defines the format this way, I just $! made an educated guess based on past experience. If $! other companies follow this same format, you should $! be able to use this program to install their patches.