サーバーに ftp で送信し、テキスト ファイルを読み込んで切断するバッチ ファイルが必要です。サーバーにはユーザーとパスワードが必要です。私は試した
@echo off
pause
@ftp example.com
username
password
pause
しかし、それは決してログオンしませんでした。どうすればこれを機能させることができますか?
サーバーに ftp で送信し、テキスト ファイルを読み込んで切断するバッチ ファイルが必要です。サーバーにはユーザーとパスワードが必要です。私は試した
@echo off
pause
@ftp example.com
username
password
pause
しかし、それは決してログオンしませんでした。どうすればこれを機能させることができますか?
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
そしてそれは働いた!!!
どうもありがとう:)
これは古い投稿ですが、別の方法として、次のコマンド オプションを使用することもできます。
ftp -n -s:ftpcmd.txt
-n は初期ログインを抑制し、ファイルの内容は次のようになります: (127.0.0.1 を FTP サイトの URL に置き換えます)
open 127.0.0.1
user myFTPuser myftppassword
other commands here...
これにより、別の行でユーザー/パスワードを避けることができます
ftp コマンドをテキスト ファイルに記述し、次のように ftp コマンドのパラメーターとして指定する必要があります。
ftp -s:filename
詳細はこちら: http://www.nsftools.com/tips/MSFTP.htm
ユーザー名とパスワードのプロンプトで機能するかどうかはわかりません。
使用する
ftp -s:FileName
Windows XP Professional 製品ドキュメントに記載されているとおりです。
FileNameの代わりに指定する必要があるファイル名には、サーバーに送信する FTP コマンドが含まれている必要があります。これらのコマンドの中には、
その他のコマンドは、Ftp サブコマンドの下にあります。
バッチ ファイルの各行が実行されます。ただし、前の行が完了した後でのみ。あなたの場合、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
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"
}
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