我从 .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%%日期:~4,2%%date:~7,2%.7z(或 web-daily_yyyy_MM_dd.7z)。
如果可能的话,我想将这个日期作为参数传递。
答案1
我同意,北美格式可以做到这一点。也许有办法让它具有通用性,但如果服务器不变,这可能并不重要。
@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
答案2
以下是如何有效地将日期参数传递给 Windows 上的 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
这会将 web-daily_yyyy_mm_dd.7z 发送到 ftp 服务器。
答案3
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