pdp320921 发表于 2011-3-31 19:54:07

[已解决]如何调用cmd里的参数?

本帖最后由 pdp320921 于 2011-3-31 23:05 编辑

#include <Constants.au3>

;$s = 'arp -a^|findstr :'
Local $foo = Run(@ComSpec& "/c:" & 'for /f "tokens=2" %i in ('arp -a^|findstr :') do @echo %i', @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $line
While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDOUT read:"&@error, $line)
Wend
Run(@ComSpec& "/c:" & 'for /f "tokens=2" %i in ('arp -a^|findstr :') do @echo %i'Run(@ComSpec& "/c:" & 'for /f %i in ('arp -a^|findstr "mic"') do echo %i'Run(@ComSpec& "/c:" & 'for /f %i in ('arp -a^|findstr "mic"') do echo %i'这几句到底应该怎么写才能实现参数的调用?这句到底应该怎么写才能实现参数的调用?

xxoojoeooxx 发表于 2011-3-31 21:32:06

本帖最后由 xxoojoeooxx 于 2011-3-31 21:35 编辑

我想這可以算是語法錯誤吧

舉第一個例子

這裡有三個錯誤
/c: 要改為 /c
@ComSpec 和 /c 和 for... 之間要有空格
在字串中要使用"或'時請用""或''或用Chr

Msgbox(0,0,"asfsaf""safas");OK
Msgbox(0,0,'asfs''dfg''afss');OK
Msgbox(0,0,'asfsaf"sa"fas');OK
Msgbox(0,0,'asfsaf"sa"fas');OK
Msgbox(0,0,"asfsaf'sa'fas");OK

Msgbox(0,0,"asfsaf"safas");錯誤

Msgbox(0,0,'asfs'ssaffas');錯誤

所以要改成
Run(@ComSpec& " /c " & 'for /f "tokens=2" %i in (''arp -a^|findstr :'') do @echo %i', @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

pdp320921 发表于 2011-3-31 22:31:18

本帖最后由 pdp320921 于 2011-3-31 23:04 编辑

回复 2# xxoojoeooxx
感谢楼上的回复,答案很给力!
这方面有相关资料吗?
谢谢~~

lixiaolong 发表于 2011-4-1 11:48:30

回复 3# pdp320921

用这个简单

批处理转换AU3第二版 _BatToAU3ToRun
http://www.autoitx.com/thread-21101-1-1.html
页: [1]
查看完整版本: [已解决]如何调用cmd里的参数?