Я вызываю следующее из файла .cmd:
ftp -d -s:D:\backup\web-daily.txt
Файл web-daily.txt - это входной ftp-файл с аналогичным содержимым:
open <server>
<login>
<password>
put d:\backup\web-daily.7z web-daily.7z
quit
Мне нужно передать текущую дату во входной файл ftp. Возможно ли это без выполнения программы, которая фактически изменяет web-daily.txt? Это потому, что web-daily.7z на самом деле web-daily_% date: ~ 10,4%% date: ~ 4,2%% date: ~ 7,2% .7z (или web-daily_yyyy_MM_dd.7z).
Я бы хотел передать эту дату в качестве параметра, если это возможно.
Вот как эффективно передать параметр даты во входной файл FTP в Windows.
@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
Это отправит web-daily_yyyy_mm_dd.7z на ftp-сервер.
Я согласен, это будет сделано в североамериканском формате. Может быть способ сделать его универсальным, но это может не иметь значения, если сервер не будет меняться.
@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
Rem: This worked for me
@echo off
setlocal
@echo off > %0.ftp
>> %0.ftp echo open **server**
>> %0.ftp echo **userid**
>> %0.ftp echo **password**
>> %0.ftp hash
>> %0.ftp asc
>> %0.ftp echo lcd c:\program\data\ (your local path)
>> %0.ftp echo cd fam/user/tcs/in/hold (your ftp path)
>> %0.ftp echo get 01000%date:~10,4%%date:~4,2%%date:~7,2%01.txt
>> %0.ftp echo quit
ftp -s:%0.ftp
del %0.ftp
rem below line gets a file with today's date from the ftp server
01000%date:~10,4%%date:~4,2%%date:~7,2%01.txt