ファイルのリストの CSV ファイルを読み取り、それらを FTP サーバーにアップロードするスクリプトを作成しました。CSV 構造は次のようになります。
local_file,remote_file
このスクリプトは、必要なすべての FTP コマンドを含むテキスト ファイルを作成し、FTP コマンドを実行します。for ループがそのコマンドの外部にあるコードを実行することを除いて、すべてが機能します。つまり、以下のすべてecho put "%1" "%2" >> %Commands%
がすべての for ループでも実行され、すべての put コマンドを含む適切にフォーマットされたファイルを取得する代わりに、これを取得します (コマンドファイルから)出力):
open servername
username
password
binary
put "local_path_to\first_file_on_the_list.php" "remote_path_to\first_file_on_the_list.php"
close
bye
put "-d" "-i"
close
bye
put "-d" "-i"
close
bye
put "-d" "-i"
close
...
スクリプトコードは次のとおりです。
@echo off
setlocal EnableExtensions
rem Connection credentials
set Server=servername
set UserName=username
set Password=password
set Commands="commands.txt"
echo open %Server% > %Commands%
echo %UserName% >> %Commands%
echo %Password% >> %Commands%
echo binary >> %Commands%
rem Read the CSV file line by line
for /f %%a in (matches3.csv) do call :parse %%a
rem Transform CSV line into FTP put commmand
:parse
echo put "%1" "%2" >> %Commands%
:end
rem Add commands to close ftp conn
echo close >> %Commands%
echo bye >> %Commands%
rem Perform the FTP upload
echo loggin in to ftp...
FTP -d -i -s:%Commands% %Server%
echo finished.
pause
rem Clean up.
if exist %Commands% del %Commands%
endlocal
exit
:end 以下のすべてが実行される理由がわかりません! 事前にどうもありがとうございました