Passing External Values Into Command Scripts |
Top Previous Next |
It is possible to pass up to nine values into a Robo-FTP script via command line arguments. The -p command line switch is combined with a single digit between 1 and 9 and then followed by a value. For example:
robo-ftp.exe -p1 FridaySales.xls
Values passed in on the command line are available for use in script logic via nine internally defined variables named %1 through %9. The numeral in the variable name corresponds to the digit that follows the -p switch. The example below would assign the value FridaySales.xls to the script variable named %1. This variable could be used in the script as follows:
SENDFILE %1
Now consider the following command line.
robo-ftp.exe -p1 "ACME Bricks" -p2 "SENDFILE 'newdata.dat'"
Given the command line above, the following script file:
DASHBOARDMSG "Connecting" FTPLOGON %1 PERFORM %2 DASHBOARDMSG "Done" FTPLOGOFF EXIT
... would be executed as if it was originally written as:
DASHBOARDMSG "Connecting" FTPLOGON "ACME Bricks" SENDFILE 'newdata.dat' DASHBOARDMSG "Done" FTPLOGOFF EXIT
Notice above that values with embedded spaces must be enclosed in quotation marks. When you need to pass in a value that itself contains quotations marks you can combine pairs of single and double quote characters.
The advantage to the -p switch syntax over the legacy method (see below) is that Windows environment variables (e.g., %SystemDrive%, %USERNAME%, etc.) as well as user defined strings may be passed into Robo-FTP. You cannot mix multiple environment variables and/or environment variables and user strings in the same argument. Use of this method and the legacy method on the same command line is not recommended.
Handling Missing Parameters A script that depends on external parameter values should be designed to fail gracefully when they are unexpectedly absent. One way of handling the situation is by assigning the expected variable value to a test variable and trapping the error condition that would occur if the variable is missing, for example:
SET testvar = %1 ;; error if %1 is missing IFERROR= $ERROR_VAR_NOT_FOUND GOTO handle_missing_arguments
It is possible to create scripts with optional external parameters by assigning the expected variable value to a local script variable that has already been assigned a default value. With this technique, the default value makes it possible to simply ignore the $ERROR_VAR_NOT_FOUND error returned when attempting to assign the missing variable, for example:
SET ArchivePath = "c:\archive\" + %date ;; assign default value SET ArchivePath = %2 ;; error if %2 is missing WORKINGDIR ArchivePath ;; uses default if %2 is missing
Legacy Method It is also possible to pass values into Robo-FTP by using either the & or % character as a string delimiters, for example:
&argument& %different argument%
The first argument, reading left to right, is assigned to a variable named %1, the second argument is assigned to %2, and so on.
Related command(s): EXEC, CALL, CHAIN See also: Script File Variables, Launching Robo-FTP with Command Line Switches
|