看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《awpboom (awp)》之銘言: : 那我現在要把這先變數鍵入cmd裡 : 假設是arp的語法好了 : Shell("cmd.exe /c arp -s a b") : 為什麼我的a和b在cnd裡面都讀不到 當你寫 "cmd.exe /c arp -s a b" 你應該知道這是一行字串,其中 a b 都是存在於字串中的符號, 字面上就是 "a" 與 "b". 你之前所宣告的變數 a b 與此字串的 a b 無關. 你想做的是把位址指定到 a b 二變數, 並把二變數的值插入字串中 a b 的位置, 你打 Sell("cmd.exe /c arp -s a b") 並認為 a b 應該是所輸入的位址,是天真了. (可見你是沒有普通程式基礎的新手.) 有二種寫法,第一是用字串串接符號 & 如果你寫 Dim a As String, b As String a = Console.ReadLine() b = Console.ReadLine() 寫以下這行 "A: " & a & " B: " & b 程式執行時,對 a 輸入10,對 b 輸入3,上面這行就會得到一個字串 "A: 10 B: 3" 這是字串串接功能. 所以,你的程式改寫成 Dim a As String, b As String a = Console.ReadLine() b = Console.ReadLine() Shell("cmd.exe /c arp -s " & a & " " & b) 就是所要的. 第二個寫法,可利用String.Format()函數. 當你寫 String.Format("A: {0} B: {1}", a, b) 程式執行時,若 a 為10,b為3,上一行會得到一個字串為 "A: 10 B: 3" 當你寫 String.Format("First: {0} Second: {1} Third: {2}", 1, 2, 3) 程式執行時,上一行會得到一個字串 "First: 1 Second: 2 Third: 3" 這二個例子,你可看出String.Format()可以有好幾個參數, 第一個參數是格式字串,描述輸出文字格式的配置; 第二個參數及其之後,是依序要插入到格式字串中指定位置的資料. 格式字串中,每一對曲線括弧,中間帶有一個數字,代表一個可插入資料的空位, 曲線括弧對中的數字,代表要將後面第幾個參數擺進此空位中, {0}要抓第二個參數,{1}要抓第三個參數,{2}要抓第四個參數,{3}要抓第五個參數... 使用String.Format()函數,你的程式改寫成 Dim a As String, b As String Dim cmd As String a = Console.ReadLine() b = Console.ReadLine() cmd = String.Format("cmd.exe /c arp -s {0} {1}", a, b) Shell(cmd) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.66.36