Download files from ftp

marcelvos1marcelvos1 Member Posts: 6
Hi all,

I try to download files from a ftp server within NAV, but no files are downloaded to my computer. I have try the batch file directly from my computer and its still working. The ftpfile.bat is still created when I run this script in NAV.

I read the forum but I found no sollution for this.

Please help me. Thanks.

Code:

FileName := ENVIRON('TEMP') +'\ftpfile.bat';

TextFile.CREATE(FileName);
TextFile.WRITEMODE(TRUE);
TextFile.TEXTMODE(TRUE);
TextFile.WRITE('@ECHO OFF');
TextFile.WRITE('CD ' + ENVIRON('TEMP'));
TextFile.WRITE(':retry_del2');
TextFile.WRITE('DEL "*.csv" > NUL');
TextFile.WRITE('if exist "*.csv" goto retry_del2');
TextFile.WRITE('> script.ftp ECHO open ' + '[ftp server]');
TextFile.WRITE('>>script.ftp ECHO USER ' + '[user]');
TextFile.WRITE('>>script.ftp ECHO ' + '[password]');
TextFile.WRITE('>>script.ftp ECHO cd /' + '[folder]');
TextFile.WRITE('>>script.ftp ECHO bin');
TextFile.WRITE('>>script.ftp ECHO mget *.csv');
TextFile.WRITE('>>script.ftp ECHO Bye');
TextFile.WRITE('FTP -i -n -s:script.ftp ' + '[ftp server]');
TextFile.WRITE('TYPE NUL >script.ftp');
TextFile.WRITE('DEL script.ftp');
TextFile.WRITE(':retry_del');
TextFile.WRITE('DEL "' + FileName + '" > NUL');
TextFile.WRITE('if exist "' + FileName + '" goto retry_del');
TextFile.CLOSE;

IF ISCLEAR(lAutWshShell) THEN
CREATE(lAutWshShell);

lBlnWaitOnReturn := TRUE;
lIntWindowType := 0;

lAutWshShell.Run(FileName, lIntWindowType, lBlnWaitOnReturn);

CLEAR(lAutWshShell);

Comments

  • JedrzejTJedrzejT Member Posts: 267
    Hi,

    I just paste my working code (with PUT against GET) - maybe this will help.
    I Don't know if this is the best solution, but it works for me - from Nav.
    CmdFile.WRITEMODE(TRUE);
    CmdFile.TEXTMODE(TRUE);
    CmdFile.QUERYREPLACE(TRUE);
    CmdFile.CREATE(setup."Ftp - tmp folder" + '\Cmd.txt');
    CmdFile.WRITE('USER ' + UserVariable + ' ' + PassVariable);
    CmdFile.WRITE('cd ' + setup."ftp path");
    CmdFile.WRITE('put ' + setup."ftp file");
    CmdFile.WRITE('bye');
    CmdFile.CLOSE;
    
    BatchFile.WRITEMODE(TRUE);
    BatchFile.TEXTMODE(TRUE);
    BatchFile.QUERYREPLACE(TRUE);
    BatchFile.CREATE(setup."Ftp - tmp folder" + '\FtpBatch.bat');
    BatchFile.WRITE('ftp -n -s:Cmd.txt ' + setup."ftp Host");
    BatchFile.CLOSE;
    
    CREATE(WScript);
    WScript.Exec(setup."Ftp - tmp folder" + '\FtpBatch.bat');
    CLEAR(WScript);
    

    setup."ftp Host" = Ip exmp. 101.101.101.101
  • Luc_VanDyckLuc_VanDyck Member, Moderator, Administrator Posts: 3,633
    I have used http://www.ncftp.com/ncftp/ with success, together with a batch-file like:
    "c:\Program files\NcFTP\ncftpget.exe" -u <username> -p <password> ftp.site.com C:\dir\file.ext
    
    No support using PM or e-mail - Please use this forum. BC TechDays 2024: 13 & 14 June 2024, Antwerp (Belgium)
  • nthainthai Member Posts: 22
    I have a lot of fun with AutoFTP software. You can schedule an Upload or a Download at any interval.

    NIEM THAI
  • marcelvos1marcelvos1 Member Posts: 6
    Hi all,

    Thanks for your input. I found the problem. The problem was that there was no valid location to store the files when I run the script with NAV.

    I add this line of code in my script and its working. :D

    Code:

    FileName := ENVIRON('TEMP') +'\ftpfile.bat';

    TextFile.CREATE(FileName);
    TextFile.WRITEMODE(TRUE);
    TextFile.TEXTMODE(TRUE);
    TextFile.WRITE('@ECHO OFF');
    TextFile.WRITE('CD ' + ENVIRON('TEMP'));
    TextFile.WRITE(':retry_del2');
    TextFile.WRITE('DEL "*.csv" > NUL');
    TextFile.WRITE('if exist "*.csv" goto retry_del2');
    TextFile.WRITE('> script.ftp ECHO open ' + '[ftp server]');
    TextFile.WRITE('>>script.ftp ECHO USER ' + '[user]');
    TextFile.WRITE('>>script.ftp ECHO ' + '[password]');
    TextFile.WRITE('>>script.ftp ECHO cd /' + '[folder]');
    TextFile.WRITE('>>script.ftp ECHO lcd ' + ENVIRON('TEMP'));
    TextFile.WRITE('>>script.ftp ECHO bin');
    TextFile.WRITE('>>script.ftp ECHO mget *.csv');
    TextFile.WRITE('>>script.ftp ECHO Bye');
    TextFile.WRITE('FTP -i -n -s:script.ftp ' + '[ftp server]');
    TextFile.WRITE('TYPE NUL >script.ftp');
    TextFile.WRITE('DEL script.ftp');
    TextFile.WRITE(':retry_del');
    TextFile.WRITE('DEL "' + FileName + '" > NUL');
    TextFile.WRITE('if exist "' + FileName + '" goto retry_del');
    TextFile.CLOSE;

    IF ISCLEAR(lAutWshShell) THEN
    CREATE(lAutWshShell);

    lBlnWaitOnReturn := TRUE;
    lIntWindowType := 0;

    lAutWshShell.Run(FileName, lIntWindowType, lBlnWaitOnReturn);

    CLEAR(lAutWshShell);
Sign In or Register to comment.