我有一個.bat檔案,我在其中使用FTP進行一些操作。我想結束FTP連接并在所需目錄上完成終端。
我正在嘗試這個,但是當它“退出”時它停止了。
cd %USERPROFILE%\Foilder\project\angular
call ng build
@FTP -i -s:"%~f0"&GOTO:EOF
open connection
user
password
cd httpdocs/project
mdelete *.woff
quit
cd %USERPROFILE%\Foilder\Subfolder
它在執行“退出”之后立即給了我這個訊息并且從不運行下一行。
221 Goodbye.
理想方案:運行最后一個cd命令,并在我要運行它的檔案夾上準備好終端。問題是我必須對兩個不同的 FTP 進行一些上傳,如果控制臺在我運行“dev.bat”的檔案夾中完成以使其作業,那就太好了
有可能嗎?
提前致謝
uj5u.com熱心網友回復:
您的腳本使用已知的hack,允許您ftp直接在批處理檔案中指定命令。
%~f0替換為批處理檔案本身的路徑。所以ftp -s:%~f0運行ftp并告訴它使用批處理檔案本身作為ftp腳本檔案。您可能已經注意到它會導致幾個錯誤,因為ftp批處理檔案的前幾行失敗,它們不是有效ftp的命令(cd ...和call ...)ftp ...。
ftp ...等效地,批處理檔案將在完成后嘗試運行所有命令ftp,但也會失敗,因為這些不是有效的批處理檔案命令。為避免這種情況,黑客使用GOTO:EOF跳過批處理檔案的其余部分(檔案的EOF = eof)。
雖然您實際上想在ftp. 至少cd命令。所以不要跳過批處理檔案的其余部分。僅跳過ftp命令:
ftp -i -s:"%~f0"&goto AFTER_FTP
(ftp commands)
quit
:AFTER_FTP
cd %USERPROFILE%\Foilder\Subfolder
注意@之前的ftp. 那(和GOTO:EOF)是明確的標志,表明您基于批處理檔案的腳本被設計為從第一行開始,除了命令ftp之外什么都不包含。ftp你已經偏離了這一點。
或者,使用一些功能更強大的 FTP 客戶端,它允許在其命令列上指定命令而無需 hack。
例如,使用我的 WinSCP FTP 客戶端,您可以:
cd %USERPROFILE%\Foilder\project\angular
call ng build
winscp.com /ini=nul /command ^
"open ftp://user:password@connection/" ^
"cd httpdocs/project" ^
"rm *.woff" ^
"exit"
cd %USERPROFILE%\Foilder\Subfolder
有一個將 Windowsftp腳本轉換為 WinSCP 腳本的指南。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/517989.html
標籤:视窗批处理文件ftp
