3

MS DOS ftp スクリプト (Windows 7) を使用して Unix マシンから多数のファイルを取得しようとしています。私はこれが初めてなので、オンラインの例を変更しようとしています。コードは次のとおりです。

@echo off
SETLOCAL

REM ##################################
REM Change these parameters
set FTP_HOST=host
set FTP_USER=user
set FTP_REMOTE_DIR=/users/myAcc/logFiles
set FTP_REMOTE_FILE=*.log
set FTP_LOCAL_DIR=C:\Temp
set FTP_TRANSFER_MODE=ascii
REM ##################################
set FTP_PASSWD=password

set SCRIPT_FILE=%TEMP%\ftp.txt
(
    echo %FTP_USER%
    echo %FTP_PASSWD%
    echo %FTP_TRANSFER_MODE%
    echo lcd %FTP_LOCAL_DIR%
    echo cd  %FTP_REMOTE_DIR%
    echo prompt
    echo mget %FTP_REMOTE_FILE%
) > %SCRIPT_FILE%

ftp -s:%SCRIPT_FILE% %FTP_HOST%
del %SCRIPT_FILE%

ENDLOCAL

ただし、これを実行するとmgetコマンドが失敗し、次の出力が表示されます。

注: スクリプトの残りの部分からの出力は、前のすべてのステップが期待どおりに機能していることを示しています。lsスクリプトが正しいディレクトリにあることを確認するコマンドも追加しました。

...
ftp> mget *.log
200 Type set to A; form set to N.
mget logFile1_SystemOut_22-01-13.log? mget logFile2_SystemOut_22-01-13.log? mget 
logFile3_SystemOut_22-01-13.log? ftp>

まったく同じ手順を手動で繰り返し実行しましたが、問題なく動作し、ファイルは C:\Temp ディレクトリに正常に転送されました。

多数のフォーラムや他の Web サイトをチェックしましたが、このように動作する理由がわかりません。これがスクリプトで機能しない理由についてのポインタは素晴らしいでしょう!

ありがとう

4

4 に答える 4

1

ftp mget によって生成されたプロンプトをオフにする通常のオプションは次のとおりです。

ftp -i

デフォルトでは、ftpmget "wildcard"は、スクリプトで生成した文字列によって見つかった各ファイルのプロンプトを表示して待機します。

于 2013-01-23T19:49:26.420 に答える
0

ftp -i -s:%SCRIPT_FILE% %FTP_HOST%私のためにも働いた。

別のオプションは、mget を呼び出す前に ftp スクリプトでプロンプトを切り替えることです (実行します)。私もmget -iどこかで読みました。

ただし、注意: promptftp スクリプトでは、以前にオフになっていた場合、プロンプトをオンに戻します。したがって、両方ではなくどちらかのftp -iORを使用してください。prompt

mget の後に ftp スクリプトでいくつかの 's をエコーすることにより、スクリプトが別の方法で機能するかどうかを確認できますy。したがって、プロンプトが表示されたときに yes と応答します。

于 2016-10-25T16:41:17.197 に答える