none
有辦法只複製記事本的中間那行嗎?? RRS feed

  • 問題

  • 例如:arp -a > tmp.txt
    Interface: 192.168.1.35 --- 0x2
      Internet Address      Physical Address      Type
      192.168.1.1           00-50-7f-c3-7e-6c     dynamic

    我只要00-50-7f-c3-7e-6c
    要如何用呀??
    是要先刪除其他行嗎??
    還是有辦法可以直接複製00-50-7f-c3-7e-6c這行??
    要如何使用呀??

    2008年6月2日 上午 03:10

解答

  • 請使用字串函數或類別。

     

    arp 輸出的格式是固定的,所以透過 split 函數或方法,以 vbNewLine 切割,取的陣列(3) 得值,就是第四行。

     

    若不想學 InStr / IndexOf 函數或方法的用法,那一樣,用 Split 以空白來切割第四行,陣列搜尋第二個長度大於零的就是目標。

     

    Interface 那行長度會變,所以還是必須用字串搜尋方式查找。

    2008年6月2日 上午 11:53
    版主
  • 除了用Split切割出來,也可以用RegularExpression(規則運算式)

     

    Code Snippet

     

    string sSource = 你要分析的資料

    Regex.Match(sSource,@"([0-9a-fA-F]{2})[-]([0-9a-fA-F]{2})");

     

     

    RegularExpression 參考資料

    2008年6月2日 下午 02:39
  • 小修改...

    string s = @"Interface: 192.168.1.35 --- 0x2
                 Internet Address      Physical Address      Type
                 192.168.1.1           00-50-7f-c3-7e-6c     dynamic";
     
    Match m = Regex.Match(s, @"([\da-f]{2}-){5}[\da-f]{2}");
     
    if(m.Success)
    {
        Console.WriteLine(m.Groups[0].ToString());
    }

    2008年6月3日 上午 01:43
  • 命令提示字元下輸入:  arp -a > c:\output.txt

    就會把輸出的內容全部存在 c:\output.txt
    2008年6月8日 上午 11:05

所有回覆

  • 我要用vb複製命令提示字完的的字要如何下指令??
    例如:arp -a
    Interface: 192.168.1.35 --- 0x2
      Internet Address      Physical Address      Type
      192.168.1.1           00-50-7f-c3-7e-6c     dynamic
    複製到記事本上呀??

     

    2008年6月1日 下午 05:01
  • 請使用字串函數或類別。

     

    arp 輸出的格式是固定的,所以透過 split 函數或方法,以 vbNewLine 切割,取的陣列(3) 得值,就是第四行。

     

    若不想學 InStr / IndexOf 函數或方法的用法,那一樣,用 Split 以空白來切割第四行,陣列搜尋第二個長度大於零的就是目標。

     

    Interface 那行長度會變,所以還是必須用字串搜尋方式查找。

    2008年6月2日 上午 11:53
    版主
  • 除了用Split切割出來,也可以用RegularExpression(規則運算式)

     

    Code Snippet

     

    string sSource = 你要分析的資料

    Regex.Match(sSource,@"([0-9a-fA-F]{2})[-]([0-9a-fA-F]{2})");

     

     

    RegularExpression 參考資料

    2008年6月2日 下午 02:39
  • 那我這樣打為什麼他說我的索引在陣列的界限之外呀??

    是不是哪裡有打錯呀??

     

    Dim a As String = "c:\tmp.txt"
    Dim b() As String = a.Split(vbNewLine)

    TextBox1.Text = b(3)

    2008年6月2日 下午 03:16
  • ...

    Code Snippet
    Dim a As String = "c:\tmp.txt"

     

     

    你把檔名跟檔案內容搞混了。

     

    你沒有任何讀檔的動作,拿檔名去做字串處理,有意義嗎?

    2008年6月2日 下午 04:21
    版主
  • 那要如何讀檔呀?

     

    2008年6月2日 下午 04:24
  • ...

    請查詢線上手冊 FileStream 的說明。

     

    我自己用的函數在:

    http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Function&Module=16&Function=95

     

    2008年6月2日 下午 04:28
    版主
  • 那讀出來他說ifs不是system.io.filestream的成員耶!!

    那還可以用split嗎??

    Dim ifs As FileStream = New FileStream("c:\tmp.txt", FileMode.Open)
    Dim br As BinaryReader = New BinaryReader(ifs)
    Dim d As String = br.ReadString()
    Dim b() As String = ifs.Split(vbNewLine)

     

    不好意思!!

    2008年6月2日 下午 04:40
  •  Mr .NET 寫信:

    除了用Split切割出來,也可以用RegularExpression(規則運算式)

     

    Code Snippet

     

    string sSource = 你要分析的資料

    Regex.Match(sSource,@"([0-9a-fA-F]{2})[-]([0-9a-fA-F]{2})");

     

     

    RegularExpression 參考資料

     

     

    修正RegularExpression規則如下

    Code Snippet

    [0-9a-fA-F]{2}[-][0-9a-fA-F]{2}[-][0-9a-fA-F]{2}[-][0-9a-fA-F]{2}[-][0-9a-fA-F]{2}[-][0-9a-fA-F]{2}

     

     

    2008年6月3日 上午 01:13
  • 小修改...

    string s = @"Interface: 192.168.1.35 --- 0x2
                 Internet Address      Physical Address      Type
                 192.168.1.1           00-50-7f-c3-7e-6c     dynamic";
     
    Match m = Regex.Match(s, @"([\da-f]{2}-){5}[\da-f]{2}");
     
    if(m.Success)
    {
        Console.WriteLine(m.Groups[0].ToString());
    }

    2008年6月3日 上午 01:43
  • 不知您是否解決問題了?!
    方法:1.將滑鼠游標移到命令提示字元的視窗中
              2.按滑鼠右鍵->全選
              3.開啟記事本,按鍵盤"Ctrl+V"
    2008年6月5日 上午 05:58
  • 命令提示字元下輸入:  arp -a > c:\output.txt

    就會把輸出的內容全部存在 c:\output.txt
    2008年6月8日 上午 11:05
  • 程式擷取方式

    ProcessStartInfo psi = new ProcessStartInfo();
    psi.WorkingDirectory = @"C:\WINDOWS\system32\";
    psi.FileName = @"cmd.exe";
    psi.Arguments = "/C arp -a";
    psi.RedirectStandardOutput = true;
    psi.UseShellExecute = false;
    psi.WindowStyle = ProcessWindowStyle.Hidden;
     
    Process p = new Process();
    p.StartInfo = psi;
    p.Start();
    string output = p.StandardOutput.ReadToEnd();
     
    foreach (Match m in Regex.Matches(output, @"([\da-f]{2}-){5}([\da-f]{2})"))
    {
        Console.WriteLine(m.Groups[0]);
    }

    2008年6月8日 上午 11:33