Imports System.IO Imports System.Net.NetworkInformation Imports System.Net.Sockets Imports System.Text Public Class FTP_DGAC_SYS Dim FTP位置, file_name, strDirName As String Dim 刪除數, 位置1, 總數, N1, N2, N3, N4, N5, N6, N7 As Integer Dim Strs As String = Application.StartupPath Dim Str As String = Application.StartupPath Private Sub FTP_DGAC_SYS_Load(sender As Object, e As EventArgs) Handles MyBase.Load Panel1.SendToBack() : 位置1 = -1 捷徑_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) 捷徑_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 捷徑_dgv.ColumnHeadersHeight = 25 : 捷徑_dgv.AllowUserToAddRows = False 捷徑_dgv.RowTemplate.Height = 20 : 捷徑_dgv.Columns(0).FillWeight = 30 捷徑_dgv.Columns(0).ReadOnly = True 剔除清單_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) 剔除清單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 剔除清單_dgv.ColumnHeadersHeight = 25 : 剔除清單_dgv.AllowUserToAddRows = False 剔除清單_dgv.RowTemplate.Height = 20 : 剔除清單_dgv.Columns(0).FillWeight = 30 剔除清單_dgv.Columns(0).ReadOnly = True End Sub Private Sub FTP_DGAC_SYS_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown SQL_連線字串_國外() : Dim ds1 As New DataSet 清單1_dgv.DataSource = Nothing : ds1.Clear() 清單1_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 清單1_dgv.ColumnHeadersHeight = 25 : 清單1_dgv.AllowUserToAddRows = False : 清單1_dgv.RowTemplate.Height = 35 SQL_伺服器檢測() da.Fill(ds1) : 清單1_dgv.DataSource = ds1.Tables(0) : conn.Close() For I As Integer = 0 To 清單1_dgv.Rows.Count - 1 : 清單1_dgv.Rows(I).Cells("次數").Value = "0" : Next '--------------自動循環--------------------------------------------------------------------- If File.Exists(Strs & "\OPAUTO.CSV") Then : 自動循環_ch.Checked = True : Else : 自動循環_ch.Checked = False : End If '--------------類計數量--------------------------------------------------------------------- If File.Exists(Str + "\DLNUD.CSV") Then Dim filereader = My.Computer.FileSystem.OpenTextFileReader(Str + "\DLNUD.CSV", System.Text.Encoding.Default) Dim Text As String = "" : Dim line As String = filereader.ReadLine() While Not (line Is Nothing) : Text = Text & line & vbCrLf : line = filereader.ReadLine() : End While : filereader.Close() 計數_nud.Value = Text Else 計數_nud.Value = 0 End If '--------------FTP位置--------------------------------------------------------------------- If File.Exists(Str + "\FTPLINE.CSV") Then Dim filereader = My.Computer.FileSystem.OpenTextFileReader(Str + "\FTPLINE.CSV", System.Text.Encoding.Default) Dim Text As String = "" : Dim line As String = filereader.ReadLine() While Not (line Is Nothing) : Text = Text & line & vbCrLf : line = filereader.ReadLine() : End While : filereader.Close() 計算分流1.Enabled = True : 計算分流2.Enabled = True : 停頓1.Enabled = True Else If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then FTP位置 = FolderBrowserDialog1.SelectedPath Dim strDirName As String If File.Exists(Strs & "\FTPLINE.CSV") Then : File.Delete(Strs & "\FTPLINE.CSV") : End If strDirName = Strs & "\FTPLINE.CSV" Try Using fs As IO.FileStream = New IO.FileStream(strDirName, FileMode.Append) Using sw As StreamWriter = New StreamWriter(fs, Encoding.Default) Dim strd As String = FTP位置 sw.WriteLine(strd) '插入一整行 sw.Flush() End Using End Using Catch ex As Exception End Try 計算分流1.Enabled = True : 計算分流2.Enabled = True : 停頓1.Enabled = True Else MsgBox("請先選擇資料夾路徑!!") End If End If : 確定LINE伺服器開通() : 伺服器上線檢測開始() : 計算分流3.Enabled = True End Sub Private Sub FTP_DGAC_SYS_Closing(sender As Object, e As EventArgs) Handles MyBase.Closing If File.Exists(Strs & "\DLNUD.CSV") Then : File.Delete(Strs & "\DLNUD.CSV") : End If strDirName = Strs & "\DLNUD.CSV" Try Using fs As IO.FileStream = New IO.FileStream(strDirName, FileMode.Append) Using sw As StreamWriter = New StreamWriter(fs, Encoding.Default) Dim str As String str = 計數_nud.Value : sw.WriteLine(str) : sw.Flush() End Using End Using Catch ex As Exception End Try End Sub Private Sub 自動運行_Tick(sender As Object, e As EventArgs) Handles 自動運行.Tick 運行自動刪除() End Sub Private Sub 停頓1_Tick(sender As Object, e As EventArgs) Handles 停頓1.Tick If 自動循環_ch.Checked = True Then : 運行自動刪除() : 自動運行.Enabled = True : End If 停頓1.Enabled = False End Sub Dim 伺服器是否正常 As Boolean Private Sub 計算分流3_Tick(sender As Object, e As EventArgs) Handles 計算分流3.Tick If 伺服器是否正常 = True Then : 確定LINE伺服器開通() : 伺服器上線檢測開始() : Else : 計算分流3.Enabled = False : End If End Sub Private Sub 確定LINE伺服器開通() Dim ip As String = "106.1.49.218" Dim ports As String() = "2433".Split(","c) For Each portStr As String In ports : Dim port As Integer If Integer.TryParse(portStr.Trim(), port) Then Dim isPortOpen As Boolean = CheckPort(ip, port) : Dim result As String If isPortOpen = True Then : result = "LINE 訊息通知伺服器 正常" : Else : result = "LINE 訊息通知伺服器 異常" : End If If result = "LINE 訊息通知伺服器 正常" Then : 伺服器是否正常 = True : Else : 伺服器是否正常 = False : End If Else : 伺服器是否正常 = False : End If Next End Sub Private Sub 伺服器上線檢測開始() If 伺服器是否正常 = True Then Dim 伺服器 As String If File.Exists(Str + "\SERVERNAME.CSV") Then Dim filereader = My.Computer.FileSystem.OpenTextFileReader(Str + "\SERVERNAME.CSV", System.Text.Encoding.Default) Dim Text As String = "" : Dim line As String = filereader.ReadLine() While Not (line Is Nothing) : Text = Text & line : line = filereader.ReadLine() : End While : filereader.Close() 伺服器 = Text Else 伺服器 = "" End If For i As Integer = 0 To 清單1_dgv.Rows.Count - 1 If 清單1_dgv.Rows(i).Cells("模式").Value.ToString <> "" Then Try IP位置 = 清單1_dgv.Rows(i).Cells("IP").Value.ToString & "," & 清單1_dgv.Rows(i).Cells("端口").Value.ToString 模式 = 清單1_dgv.Rows(i).Cells("模式").Value.ToString SQL_連線字串_檢測() ConnOpen_檢測() : SQL1 = "SELECT 確認 FROM 確認表" : CmdSet_For_dr() If dr.Read Then 清單1_dgv.Rows(i).Cells("次數").Value = "0" Else 清單1_dgv.Rows(i).Cells("次數").Value = "0" End If Catch ex As Exception 清單1_dgv.Rows(i).Cells("次數").Value = CInt(清單1_dgv.Rows(i).Cells("次數").Value) + 1 If CInt(清單1_dgv.Rows(i).Cells("次數").Value.ToString) > 2 Then LIN訊息通知("CC259", "李協叡", 伺服器 & "]、[" & 清單1_dgv.Rows(i).Cells("名稱").Value.ToString, "連線異常") LIN訊息通知("CC259", "王詩文", 伺服器 & "]、[" & 清單1_dgv.Rows(i).Cells("名稱").Value.ToString, "連線異常") LIN訊息通知("CC259", "蘇秀虹", 伺服器 & "]、[" & 清單1_dgv.Rows(i).Cells("名稱").Value.ToString, "連線異常") End If End Try End If Next Else : 計算分流3.Enabled = False : End If End Sub Private Function CheckPort(host As String, port As Integer) As Boolean Try Using client As New TcpClient() Dim result = client.BeginConnect(host, port, Nothing, Nothing) Dim success = result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(3)) If success Then : client.EndConnect(result) : Return True : End If End Using Catch ex As Exception End Try : Return False End Function Private Sub 計算分流1_Tick(sender As Object, e As EventArgs) Handles 計算分流1.Tick 計算分流1.Enabled = False If File.Exists(Str + "\FTPLINE.CSV") Then Dim filereader = My.Computer.FileSystem.OpenTextFileReader(Str + "\FTPLINE.CSV", System.Text.Encoding.Default) Dim line As String = filereader.ReadLine() While Not (line Is Nothing) : FTP位置 = line : line = filereader.ReadLine() : End While filereader.Close() End If FTP主要位置_tb.Text = FTP位置 : N1 = 0 : N2 = 0 : N3 = 0 : N4 = 0 : N5 = 0 : N6 = 0 路徑暫存1_cb.Items.Clear() : 路徑暫存2_cb.Items.Clear() : 路徑暫存3_cb.Items.Clear() 路徑暫存4_cb.Items.Clear() : 路徑暫存5_cb.Items.Clear() : 路徑暫存6_cb.Items.Clear() For Each foundFile As String In My.Computer.FileSystem.GetDirectories(FTP位置) 路徑暫存1_cb.Items.Add(foundFile) : N1 += 1 Next For i = 1 To N1 : For Each foundFile As String In My.Computer.FileSystem.GetDirectories(路徑暫存1_cb.Items(i - 1).ToString) 路徑暫存2_cb.Items.Add(foundFile) : N2 += 1 : Next Next For i = 1 To N2 : For Each foundFile As String In My.Computer.FileSystem.GetDirectories(路徑暫存2_cb.Items(i - 1).ToString) 路徑暫存3_cb.Items.Add(foundFile) : N3 += 1 : Next Next For i = 1 To N3 : For Each foundFile As String In My.Computer.FileSystem.GetDirectories(路徑暫存3_cb.Items(i - 1).ToString) 路徑暫存4_cb.Items.Add(foundFile) : N4 += 1 : Next Next For i = 1 To N4 : For Each foundFile As String In My.Computer.FileSystem.GetDirectories(路徑暫存4_cb.Items(i - 1).ToString) 路徑暫存5_cb.Items.Add(foundFile) : N5 += 1 : Next Next For i = 1 To N5 : For Each foundFile As String In My.Computer.FileSystem.GetDirectories(路徑暫存5_cb.Items(i - 1).ToString) 路徑暫存6_cb.Items.Add(foundFile) : N6 += 1 : Next Next 總數 = N1 + N2 + N3 + N4 + N5 + N6 If N6 > 0 Then : MsgBox("子資料夾可能不只有四級,層級不足!!") : End If For i As Integer = 0 To 捷徑_dgv.Rows.Count - 1 : 捷徑_dgv.Rows.RemoveAt(0) : Next For i As Integer = 0 To 總數 - 1 : 捷徑_dgv.Rows.Insert(0) : Next For i As Integer = 0 To N1 - 1 捷徑_dgv.Rows(i).Cells(0).Value = 路徑暫存1_cb.Items(i).ToString Next For i As Integer = N1 To N1 + N2 - 1 捷徑_dgv.Rows(i).Cells(0).Value = 路徑暫存2_cb.Items(i - N1).ToString Next For i As Integer = N1 + N2 To N1 + N2 + N3 - 1 捷徑_dgv.Rows(i).Cells(0).Value = 路徑暫存3_cb.Items(i - (N1 + N2)).ToString Next For i As Integer = N1 + N2 + N3 To N1 + N2 + N3 + N4 - 1 捷徑_dgv.Rows(i).Cells(0).Value = 路徑暫存4_cb.Items(i - (N1 + N2 + N3)).ToString Next For i As Integer = N1 + N2 + N3 + N4 To N1 + N2 + N3 + N4 + N5 - 1 捷徑_dgv.Rows(i).Cells(0).Value = 路徑暫存5_cb.Items(i - (N1 + N2 + N3 + N4)).ToString Next For i As Integer = N1 + N2 + N3 + N4 + N5 To N1 + N2 + N3 + N4 + N5 + N6 - 1 捷徑_dgv.Rows(i).Cells(0).Value = 路徑暫存6_cb.Items(i - (N1 + N2 + N3 + N4 + N5)).ToString Next End Sub Private Sub 計算分流2_Tick(sender As Object, e As EventArgs) Handles 計算分流2.Tick 計算分流2.Enabled = False N7 = 0 If File.Exists(Str + "\FTPDELETE.CSV") Then Dim filereader = My.Computer.FileSystem.OpenTextFileReader(Str + "\FTPDELETE.CSV", System.Text.Encoding.Default) Dim line As String = filereader.ReadLine() While Not (line Is Nothing) line = filereader.ReadLine() If line Is Nothing Then : Else : 剔除清單_cb.Items.Add(line.ToString) : N7 += 1 : End If End While filereader.Close() End If If 剔除清單_dgv.Rows.Count > 1 Then For i As Integer = 0 To 剔除清單_dgv.Rows.Count - 1 : 剔除清單_dgv.Rows.RemoveAt(0) : Next End If If N7 > 1 Then For i As Integer = 0 To N7 - 1 : 剔除清單_dgv.Rows.Insert(0) : Next End If For i As Integer = 0 To N7 - 1 剔除清單_dgv.Rows(i).Cells(0).Value = 剔除清單_cb.Items(i).ToString Next End Sub Private Sub 剔除清單_dgv_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles 剔除清單_dgv.CellClick If e.RowIndex = -1 Then : Else : 位置1 = e.RowIndex : End If End Sub Private Sub 讀取料夾路徑_bt_Click(sender As Object, e As EventArgs) Handles 讀取料夾路徑_bt.Click If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then FTP位置 = FolderBrowserDialog1.SelectedPath If File.Exists(Strs & "\FTPLINE.CSV") Then : File.Delete(Strs & "\FTPLINE.CSV") : End If strDirName = Strs & "\FTPLINE.CSV" Try Using fs As IO.FileStream = New IO.FileStream(strDirName, FileMode.Append) Using sw As StreamWriter = New StreamWriter(fs, Encoding.Default) Dim strd As String = FTP位置 sw.WriteLine(strd) '插入一整行 sw.Flush() End Using End Using Catch ex As Exception : End Try : 計算分流1.Enabled = True Else : MsgBox("請先選擇資料夾路徑!!") : End If End Sub Private Sub 加入剔除檔案_bt_Click(sender As Object, e As EventArgs) Handles 加入剔除檔案_bt.Click If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then file_name = OpenFileDialog1.SafeFileName Else : file_name = "" : End If If file_name <> "" Then 剔除清單_dgv.Rows.Insert(0) : 剔除清單_dgv.Rows(0).Cells(0).Value = file_name Dim SELE As Boolean = False If 剔除清單_dgv.Rows.Count - 1 > 0 Then : SELE = True : End If If SELE = True Then : 剔除檔案存檔() : End If Else : End If End Sub Private Sub 刪除剔除檔案_bt_Click(sender As Object, e As EventArgs) Handles 刪除剔除檔案_bt.Click If 位置1 <> -1 And 位置1 > 剔除清單_dgv.Rows.Count Then : MsgBox("沒有選擇剃除檔案!!") Else : 剔除清單_dgv.Rows.Insert(位置1) : 位置1 = -1 : 剔除檔案存檔() : End If End Sub Private Sub 剔除檔案存檔() If File.Exists(Strs & "\FTPDELETE.CSV") Then : File.Delete(Strs & "\FTPDELETE.CSV") : End If strDirName = Strs & "\FTPDELETE.CSV" Try Using fs As IO.FileStream = New IO.FileStream(strDirName, FileMode.Append) Using sw As StreamWriter = New StreamWriter(fs, Encoding.Default) Dim str As String str = "******************" : sw.WriteLine(str) For I As Integer = 0 To 剔除清單_dgv.Rows.Count - 1 str = 剔除清單_dgv.Rows(I).Cells(0).Value : sw.WriteLine(str) '插入一整行 Next : sw.Flush() End Using End Using Catch ex As Exception End Try ': 計算分流2.Enabled = True End Sub Private Sub 自動循環_ch_CheckedChanged(sender As Object, e As EventArgs) Handles 自動循環_ch.Click If 自動循環_ch.Checked = False Then If File.Exists(Strs & "\OPAUTO.CSV") Then : File.Delete(Strs & "\OPAUTO.CSV") : End If Else If File.Exists(Strs & "\OPAUTO.CSV") Then : File.Delete(Strs & "\OPAUTO.CSV") : End If strDirName = Strs & "\OPAUTO.CSV" Try Using fs As IO.FileStream = New IO.FileStream(strDirName, FileMode.Append) Using sw As StreamWriter = New StreamWriter(fs, Encoding.Default) Dim str As String str = "******************" : sw.WriteLine(str) : sw.Flush() End Using End Using Catch ex As Exception : End Try End If End Sub Private Sub 運行自動刪除() If 捷徑_dgv.Rows.Count > 0 And 剔除清單_dgv.Rows.Count > 0 And FTP主要位置_tb.Text <> "" Then For ii As Integer = 0 To 剔除清單_dgv.Rows.Count - 1 If File.Exists(FTP主要位置_tb.Text & "\" & 剔除清單_dgv.Rows(ii).Cells(0).Value.ToString) Then File.Delete(FTP主要位置_tb.Text & "\" & 剔除清單_dgv.Rows(ii).Cells(0).Value.ToString) : 刪除數 += 1 End If Next For i As Integer = 0 To 捷徑_dgv.Rows.Count - 1 For ii As Integer = 0 To 剔除清單_dgv.Rows.Count - 1 If File.Exists(捷徑_dgv.Rows(i).Cells(0).Value.ToString & "\" & 剔除清單_dgv.Rows(ii).Cells(0).Value.ToString) Then File.Delete(捷徑_dgv.Rows(i).Cells(0).Value.ToString & "\" & 剔除清單_dgv.Rows(ii).Cells(0).Value.ToString) : 刪除數 += 1 End If Next Next : 計數_nud.Value += 刪除數 Else : MsgBox("系統基礎設定尚未完成!!") : End If If 自動循環_ch.Checked = True Then 通知_lb.Text = "☆☆☆☆☆☆☆☆☆☆ 已自動運行 ☆☆☆☆☆☆☆☆☆☆" : 通知_lb.ForeColor = Color.Green Else 通知_lb.Text = "☆☆☆☆☆☆☆☆☆☆ 未自動運行 ☆☆☆☆☆☆☆☆☆☆" : 通知_lb.ForeColor = Color.Red End If End Sub Private Sub 運行自動刪除_bt_Click(sender As Object, e As EventArgs) Handles 運行自動刪除_bt.Click If 自動循環_ch.Checked = True Then : 運行自動刪除() : 自動運行.Enabled = True : Else : 運行自動刪除() : MsgBox("可疑檔案刪除完成!!") : End If 確定LINE伺服器開通() : 伺服器上線檢測開始() : 計算分流3.Enabled = True End Sub Private Sub 計數歸零_bt_Click(sender As Object, e As EventArgs) Handles 計數歸零_bt.Click 計數_nud.Value = 0 End Sub End Class