作者yauhh (姚呵呵)
看板Visual_Basic
标题Re: [.NET]撰写CMD档要如何使用VB里已宣告的变数??
时间Sun Apr 27 17:03:47 2008
※ 引述《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