FTP スクリプト内で動的にファイル名を作成できるとは思えません。ただし、ftp スクリプトを呼び出す前に、バッチ ファイルを使用して動的にビルドすることができます。
これを行う最も簡単な方法は、展開が遅延された環境変数として表される変数部分を持つ ftp スクリプト テンプレートを作成することです。たとえば、!yesterday!
昨日の日付に展開される環境変数を参照できます。単純な FOR /F ループがテンプレートを読み取り、各行を新しい ftp スクリプト ファイルに書き込みます。変数は、遅延展開が有効になっている限り、プロセスで自動的に展開されます。
Windows バッチ ファイルで昨日の日付を取得することは、重要な作業です。SOや他のサイトに投稿された多くの方法があります。ほとんどの方法にはさまざまな制限がありますが、最も一般的なのは、ロケールの日付形式の違いによる問題の影響を受けやすいことです。getTimestamp.bat
私は、ロケールに関係なく、XP 以降のすべての Windows プラットフォームで動作する、というハイブリッド バッチ/JScript ユーティリティを使用しています。これは純粋なスクリプトであるため、.exe のダウンロードは必要ありません。getTimestamp.bat
はこちらから入手できます。
getTimestamp.bat
現在のディレクトリ、またはさらに良いことに、PATH 内のどこかにあると仮定すると、次のように動作するはずです。
getYesterday.ftp.template
option confirm off
option batch abort
open Ftp_name
lcd "U:\XXXX\YYYY\ZZZZ"
get "LoanSummary__Daily_!yesterday!.xlsx"
getYesterday.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