54

サーバーに ftp で送信し、テキスト ファイルを読み込んで切断するバッチ ファイルが必要です。サーバーにはユーザーとパスワードが必要です。私は試した

@echo off
pause
@ftp example.com
username
password
pause

しかし、それは決してログオンしませんでした。どうすればこれを機能させることができますか?

4

10 に答える 10

64

0x90hによる回答は非常に役立ちました...

このファイルを u.ftp として保存しました。

open 10.155.8.215 
user
password
lcd /D "G:\Subfolder\"
cd  folder/
binary
mget file.csv
disconnect
quit

次に、次のコマンドを実行しました。

ftp -i -s:u.ftp

そしてそれは働いた!!!

どうもありがとう:)

于 2013-07-04T05:18:31.517 に答える
18

これは古い投稿ですが、別の方法として、次のコマンド オプションを使用することもできます。

ftp -n -s:ftpcmd.txt

-n は初期ログインを抑制し、ファイルの内容は次のようになります: (127.0.0.1 を FTP サイトの URL に置き換えます)

open 127.0.0.1
user myFTPuser myftppassword
other commands here...

これにより、別の行でユーザー/パスワードを避けることができます

于 2016-07-01T15:22:56.637 に答える
6

ftp コマンドをテキスト ファイルに記述し、次のように ftp コマンドのパラメーターとして指定する必要があります。

ftp -s:filename

詳細はこちら: http://www.nsftools.com/tips/MSFTP.htm

ユーザー名とパスワードのプロンプトで機能するかどうかはわかりません。

于 2013-04-22T23:05:07.373 に答える
5

使用する

ftp -s:FileName 

Windows XP Professional 製品ドキュメントに記載されているとおりです。

FileNameの代わりに指定する必要があるファイル名には、サーバーに送信する FTP コマンドが含まれている必要があります。これらのコマンドの中には、

  • コンピューターの [ポート]を開いて FTP サーバーに接続し、
  • user UserName [Password] [Account] FTPサーバーで認証するため、
  • get RemoteFile [LocalFile]でファイルを取得し、
  • quit FTP セッションを終了し、ftp プログラムを終了します。

その他のコマンドは、Ftp サブコマンドの下にあります。

于 2013-04-22T23:08:46.040 に答える
5

バッチ ファイルの各行が実行されます。ただし、前の行が完了した後でのみ。あなたの場合、ftp行に到達するとすぐにftpプログラムが開始され、ユーザー入力を引き継ぎます。閉じられると、残りの行が実行されます。つまり、ユーザー名/パスワードは FTP プログラムに送信されることはなく、代わりに、ftp プログラムが閉じられるとコマンド プロンプト自体に送られます。

代わりに、必要なものをすべて ftp コマンド ラインで渡す必要があります。何かのようなもの:

@echo off
echo user MyUserName> ftpcmd.dat
echo MyPassword>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo put %1>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat SERVERNAME.COM
del ftpcmd.dat
于 2013-04-22T23:06:25.110 に答える
1

PowerShell も使用できます。これが私がしたことです。パターンに基づいてファイルをダウンロードする必要があったため、コマンド ファイルを動的に作成し、あとは任せftpました。

基本的な PowerShell コマンドを使用しました。追加のコンポーネントをダウンロードする必要はありませんでした。まず、必要な数のファイルが存在するかどうかを確認しました。Mget を使用して 2 回目に FTP を呼び出した場合。これは、Windows XP リモート サーバーに接続しているWindows Server 2008から実行します。

function make_ftp_command_file($p_file_pattern,$mget_flag)
{
    # This function dynamically prepares the FTP file.
    # The file needs to be prepared daily because the
    # pattern changes daily.
    # PowerShell default encoding is Unicode.
    # Unicode command files are not compatible with FTP so
    # we need to make sure we create an ASCII file.

    write-output "USER" | out-file -filepath C:\fc.txt -encoding ASCII
    write-output "ftpusername" | out-file -filepath C:\fc.txt -encoding ASCII -Append
    write-output "password" | out-file -filepath C:\fc.txt -encoding ASCII -Append
    write-output "ASCII" | out-file -filepath C:\fc.txt -encoding ASCII -Append
    If ($mget_flag -eq "Y")
    {
        write-output "prompt" | out-file -filepath C:\fc.txt -encoding ASCII -Append
        write-output "mget $p_file_pattern" | out-file -filepath C:\fc.txt -encoding ASCII -Append
    }
    else
    {
        write-output "ls $p_file_pattern" | out-file -filepath C:\fc.txt -encoding ASCII -Append
    }

    write-output quit | out-file -filepath C:\fc.txt -encoding ASCII -Append
}


###########################  Init Section ###############################
$yesterday = (get-date).AddDays(-1)
$yesterday_fmt = date $yesterday -format "yyyyMMdd"
$file_pattern = "BRAE_GE_*" + $yesterday_fmt + "*.csv"
$file_log = $yesterday_fmt + ".log"

echo  $file_pattern
echo  $file_log


############################## Main Section ############################
# Change location to folder where the files need to be downloaded
cd c:\remotefiles

# Dynamically create the FTP Command to get a list of files from
# the remote servers
echo "Call function that creates a FTP Command "
make_ftp_command_file $file_pattern N


#echo "Connect to remote site via FTP"
# Connect to Remote Server and get file listing
ftp -n -v -s:C:\Clover\scripts\fc.txt 10.129.120.31 > C:\logs\$file_log

$matches=select-string -pattern "BRAE_GE_[A-Z][A-Z]*" C:\logs\$file_log

# Check if the required number of Files available for download
if ($matches.count -eq 36)
{
    # Create the FTP command file

    # This time the command file has an mget rather than an ls
    make_ftp_command_file $file_pattern Y

    # Change directory if not done so
    cd c:\remotefiles

    # Invoke ftp with newly created command file
    ftp -n -v -s:C:\Clover\scripts\fc.txt 10.129.120.31 > C:\logs\$file_log
}
else
{
    echo "The full set of files is not available"
}
于 2013-07-30T13:53:08.187 に答える
0

I have written a script as *.sh file

#!/bin/sh
set -x
FTPHOST='host-address'
FTPUSER='ftp-username'
FTPPASSWD='yourPass'

ftp -n -v $FTPHOST << EOT
ascii
user $FTPUSER $FTPPASSWD
prompt
##Your commands
bye
EOT

Works fine for me

于 2016-07-06T10:53:57.280 に答える