Windows Server 2008 – Calling FTP from .CMD – Pass a parameter to an FTP file

batch-fileftpwindowswindows-command-promptwindows-server-2008

I am calling the following from a .cmd file:

 ftp -d -s:D:\backup\web-daily.txt

The web-daily.txt file is an ftp input file with similar contents to this:

open <server>
<login>
<password>
put d:\backup\web-daily.7z web-daily.7z
quit

I need to be able to pass the current date to the ftp input file. Is this doable without having to execute a program that actually modifies web-daily.txt? This is because web-daily.7z is actually web-daily_%date:~10,4%%date:~4,2%%date:~7,2%.7z (or web-daily_yyyy_MM_dd.7z).

I'd like to pass this date in as a parameter if possible.

Best Answer

I agree, this will do it, in North American format. There may be a way to make it universal, but that may not be important if the server won't change.

@echo off
setlocal

@echo off > %0.ftp
>> %0.ftp echo open <server>
>> %0.ftp echo <user>
>> %0.ftp echo <pw>
>> %0.ftp echo put d:\backup\web-daily_%date:~10,4%_%date:~4,2%_%date:~7,2%.7z web-daily_%date:~10,4%_%date:~4,2%_%date:~7,2%.7z
>> %0.ftp echo quit

ftp -s:%0.ftp
Related Topic