I have put psftp.exe on local server directory D:\psftp.exe I have created batch file on same local directory D:\market_extract.bat as below Batch file code as below lcd d:\landing cd /home/Comcast/sample_data mget market *.csv quit It is getting market files from remote directory /home/Comcast/sample data to local directory d:\landing. Using sas I have stored global variable in config file as D:\ftp_variable.sas below is the code Macro ftp_variables() %global market_cmd_script, PSFTP_HOME, USERID, REMOTE_FTP_SERVER, PSWD; %let market_cmd_script=D:\market_extract.bat %let PSFTP_HOME_DIR=D:\psftp; %let USERID=dummy1; %let REMOTE_FTP_SERVER=ftp.dummy1.com; %let PSWD=dummy2; %mend; %ftp_variables; Now In sas i am executing this market_extract.bat using psftp commands and global variables declared in ftp_variable.sas as below in user_written_code operator %include ‘D:\ftp_variable.sas’ %let var_str= &PSFTP_HOME_DIR &USERID@&REMOTE_FTP_SERVER -P 22 -pw &PSWD -batch -v –b &MARKET_FTP_CMD_SCRIPT; %let cmd_str= "&var_str"; %sysexec &cmd_str; It is working fine and transferring file from remote directory to local directory. New Requirement: Now I want to remove path hard coding in batch file market_extract.bat In batch file instead of d:\landing and /home/Comcast/sample_data I want to create a global variable in Sas config file ftp_variables.sas like below Macro ftp_variables () %global market_cmd_script, PSFTP_HOME, USERID, REMOTE_FTP_SERVER, PSWD,LOCAL_DIR,REMOTE_DIR; %let market_cmd_script=D:\market_extract.bat %let PSFTP_HOME_DIR=D:\psftp; %let USERID=dummy1; %let REMOTE_FTP_SERVER=ftp.dummy1.com; %let PSWD=dummy2; %let LOCAL_DIR= D:\landing %let REMOTE_DIR= /home/Comcast/sample_data %mend; %ftp_variables; In batch file market_extarct.bat replacing path hard coding with Parameter as %1,%2 Batch file code as below lcd %1 cd %2 mget market *.csv quit and while running this batch from sas giving argument to market_extract.bat as below %include ‘D:\ftp_variable.sas’ %let var_str= &PSFTP_HOME_DIR &USERID@&REMOTE_FTP_SERVER -P 22 -pw &PSWD -batch -v –b &MARKET_FTP_CMD_SCRIPT &LOCAL_DIR &REMOTE_DIR ; %let cmd_str= "&var_str"; %sysexec &cmd_str; But %1 and %2 are not getting passed as path from sas so remote files are not getting transfer to local_dir. Is there any other way to pass parameter to market_extract.bat from sas using sftp . Regards Rajendra Jain
... View more