聖峰 asked in 教育與參考考試 · 1 decade ago

批次檔連接Linux ftp 進階提

Linux:

Bin\file.db.20090107

Bin\file.db.20090311

Bin\file.db.20090721

有辦法在批次檔連接Linux 的 Ftp server

<ftp 裡面用 For 這個指令嗎

我想刪掉Linux裡面 年月日最小的檔案

Update:

你好 我的重點是

你裡面提到的 "刪除 FTP Server 上之檔案" 怎麼讓她成為變數

Update 2:

抱歉

剛剛想都沒想就以為你不懂我的意義思

你果然是高手!!

我就差在mls這個指令

謝謝

1 Answer

Rating
  • 是我
    Lv 5
    1 decade ago
    Favorite Answer

    請視您的需要修改以下 script (至少須修改 sHost、sUser、sPassword,若 bin 目錄並非位於 該 user 的 home directory 下,sFtpPath 亦須作修改),存成 .bat 檔後再執行:

    @echo off

    set sHost=FTP Server IP/Host Name

    set sUser=使用者帳號

    set sPassword=使用者密碼

    set sOutput=output.log

    set sScript=script.ftp

    set sFileName=file.db

    set sFtpPath=bin

    cd /d "您的工作目錄名稱"

    del %sOutput% 2>NUL

    echo %sUser%>%sScript%

    echo %sPassword%>>%sScript%

    echo cd %sFtpPath%>>%sScript%

    echo prompt>>%sScript%

    echo mls %sFileName%.2* %sOutput%>>%sScript%

    echo bye>>%sScript%

    ftp -s:%sScript% %sHost% >NUL

    if %ERRORLEVEL% NEQ 0 goto FtpError

    set sFirstFile=

    for /F %%A in (%sOutput%) do call :GetFirst %%A

    if "%sFirstFile%" == "" goto NotFound

    echo %sUser%>%sScript%

    echo %sPassword%>>%sScript%

    echo cd %sFtpPath%>>%sScript%

    echo prompt>>%sScript%

    echo del %sFirstFile%>>%sScript%

    echo bye>>%sScript%

    ftp -s:%sScript% %sHost% %sOutput% >NUL

    if %ERRORLEVEL% NEQ 0 goto FtpError

    echo 刪除 FTP Server 上之檔案 %sFtpPath%/%sFirstFile%。

    del %sScript% %sOutput% 2>NUL

    goto :EOF

    rem 若要使用 echo. & pause, 請加在這兒

    :FtpError

    echo Ftp Server 錯誤。

    goto :EOF

    :NotFound

    echo Ftp Server 上無 %sFtpPath%/%sFileName% 檔案。

    goto :EOF

    :GetFirst

    if "%sFirstFile%" == "" set sFirstFile=%1

    2009-02-23 09:06:27 補充:

    修正插入 echo. & pause 的位置:

    del %sScript% %sOutput% 2>NUL

    rem 若要使用 echo. & pause, 請加在這兒

    goto :EOF

    2009-02-23 09:09:18 補充:

    對不起,還有您原來的目錄名稱是 Bin,在下寫的是 bin,請自行修改。

Still have questions? Get your answers by asking now.