我认为您不能在 FTP 脚本中动态构建文件名。但是您可以在调用它之前使用批处理文件动态构建 ftp 脚本。
最简单的方法是创建一个 ftp 脚本模板,其中的变量部分表示为具有延迟扩展的环境变量。例如!yesterday!
,可以引用扩展为昨天日期的环境变量。一个简单的 FOR /F 循环读取模板,并将每一行写入一个新的 ftp 脚本文件。只要启用延迟扩展,变量就会在此过程中自动扩展。
在 Windows 批处理文件中获取昨天的日期是一项非常重要的练习。SO以及其他网站上发布了许多方法。大多数方法都有各种限制,其中最常见的是由于语言环境日期格式的差异而容易出现问题。我使用了一个名为的混合批处理/JScript 实用程序getTimestamp.bat
,它可以在从 XP 开始的任何 Windows 平台上运行,无论语言环境如何。它是纯脚本,所以不需要 .exe 下载。getTimestamp.bat
在这里可用。
假设getTimestamp.bat
在您的当前目录中,或者更好的是,在您的 PATH 中的某个位置,那么以下应该可以工作。
获取昨天.ftp.template
option confirm off
option batch abort
open Ftp_name
lcd "U:\XXXX\YYYY\ZZZZ"
get "LoanSummary__Daily_!yesterday!.xlsx"
获取昨天.bat
@echo off
setlocal enableDelayedExpansion
:: Get yesterday's date in YYYYMMDD format
call getTimestamp -od -1 -f {yyyy}{mm}{dd} -r yesterday
:: Create a temporary ftp script that uses the "yesterday" date
>temp.ftp (for /f "delims=" %%L in (getYesterday.ftp.template) do echo %%L)
:: Now simply invoke your ftp client using the temp script, something like
ftp -s:temp.ftp ...
:: Delete the temporary ftp script
del temp.ftp