[Windows]使用Bat批次檔,運用ftp上傳時,將變數帶入使用
在最近的工作任務裡,有一項需要做到運用排程自動執行bat檔,進行備份
且規則是要在指定的資料夾、指定的檔案,上傳到遠端的伺服器,並只能使用FTP
使用FTP並不難啊,只是在FTP內取得目前日期很難啊
(使用批次檔(bat)上傳FTP,可參考這篇文章:http://neochung.com/2015/01/pc/batch-file/Windows中使用批次檔(.bat) 上傳FTP檔案/)
因為FTP的指令使用有限的關係,在bat底下的變數無法帶入使用
使我懊惱的想了一會,突然有個想法,那不如自己先用bat帶變數進去,寫出上述文章內的upload.txt的資訊,再讓FTP連線使用就好了,這樣就不用每次上傳都需要人工修改變數了
而在執行後,記得要刪除txt的資訊,不然第二次使用時會重複寫入到txt,以至於只執行第一次在txt的內容
所以在程式碼最後一行加入了del的語法
「ftp_upload.bat」
@echo off
::FTP連線資訊
set server=IP
set username=FTP帳號
set password=FTP密碼
::FTP連線資訊儲存檔名稱
set ftp_upload_connect=ftp_upload_connect.txt
::取得當日時間
set YYYY=%date:~0,4%
set MM=%date:~5,2%
set DD=%date:~8,2%
::檔案格式
set FileFolder=%YYYY%-%MM%
set File=%YYYY%-%MM%-%DD%.txt
::來源/目的
set source=來源路徑(%FileFolder%/%File%)
set purpose=目標路徑
:Filestart
echo open %server%>>%ftp_upload_connect%
echo user %username%>>%ftp_upload_connect%
echo %password%>>%ftp_upload_connect%
echo prompt>>%ftp_upload_connect%
echo cd %purpose%>>%ftp_upload_connect%
echo mput %source%>>%ftp_upload_connect%
echo bye>>%ftp_upload_connect%
::執行FTP連線
ftp -s:%ftp_upload_connect% -n
::刪除FTP連線資訊儲存檔
del %ftp_upload_connect% /Q