前提・実現したいこと
windows10を用いています。
.batファイルでFTP接続を用いてデータを自動的にダウンロードするプログラムを作成していました。
何度かFTPでデータを取ることも成功していて改良を重ねていたのですが
ある程度プログラムが完成してきた時に、急にFTP接続中にバッチファイルが固まるようになりました。
該当のソースコード
PowerShellファイル
cd ....\FTP
$dir=get-location
$products = Import-Csv ./番号とIPアドレス.csv -Encoding UTF8 -Header "col1" ,"col2"
$row=Import-Csv ./番号とアドレス.csv | Measure-Object | Select-Object -expand count
$num=@()
$ip=@()
for($i=1;$i -lt $row+1; $i++){
$transfer=@()
$num+=$products[$i].col1
$ip+=$products[$i].col2
$transfer+=$num[$i-2]
$transfer+=$ip[$i-2]
start-process -FilePath ./PS1File/filename.bat -Argumentlist $transfer -Wait
まだ下に続きますが、ここでstart-processを実行した先のbatファイルで固まりました。
.batファイル
@REM FTP接続
@echo off
REM IPアドレス、ユーザー名、パスワードの入力
set Number=%1
set IP=%2
set UserID=a
set Pass=a
set CD=cd XXX/123456
set CD2=cd YYY/567890
echo pingを確認しています。
ping %IP% | FINDSTR "ラウンド トリップの概算時間 (ミリ秒):"
if %ERRORLEVEL%==1 (
echo 番号:%Number%接続に失敗しました>>log.txt exit
)
REM FTP接続用プログラム1(リモート内のファイルリストの取得)の作成
echo open %IP%>Filename.txt
echo %UserID%>>Filename.txt
echo %Pass%>>Filename.txt
echo %CD%>>Filename.txt
echo ls>>Filename.txt
echo bye>>Filename.txt
REM FTPプログラム1の実行
FTP -i -s:Filename.txt>Filename2.txt
このプログラムももう少し続きますがここで固まります。
試したこと
コマンドプロンプトから確認すると以下のメッセージがの後に固まっていました。
200 Port set okay
150 Opening BINARY mode data connection
コマンドプロンプトで実行したこと
ftp 192.168.xxx.xxx
a
a
ls
補足情報(FW/ツールのバージョンなど)
その後、色々と調べていたのですが、コマンドプロンプトではACTIVモードしかできないので、LSで固まるということはポート20が開いていないということがわかりました。
Windows Defenderでポート20を指定したのですがTelnet 192.168.xxx.xxx 20をしても繋がりません。
また、ポート21は繋がりました。
以前まで繋がっていたものが繋がらなくなるというようなことはあるのでしょうか。
また、具体的な対処法を教えていただけたらありがたいです。
あなたの回答
tips
プレビュー