中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 单引号嵌套如何处理 上一主题 | 下一主题
bd123456789
中级用户





积分 360
发帖 216
注册 2007-5-29
状态 离线
『楼 主』:  单引号嵌套如何处理

批处理中能顺利执行的语句:

for /f "skip=9 tokens=2* delims== " %%a in ('tasklist  /v /fo list /fi "imagename eq notepad.exe"') do echo %%b

现在我想使用VBS,显示进程任务标题

Set WshShell=WScript.CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("cmd /c for /f " & """skip=9 tokens=2* delims== "" %%a in (" & "'" & """tasklist  /v /fo list /fi ""imagename eq notepad.exe""" & "'" & ") do echo %%b")
WScript.Echo oExec.StdOut.ReadAll

结果总是空白?

问题是:如何在括号中正确使用引号,以解决单引号和双引号问题???

[ Last edited by bd123456789 on 2008-3-27 at 07:12 PM ]

2008-3-27 19:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

Set WshShell = WScript.CreateObject("WScript.Shell")
strCommand = "cmd /c @echo off&&for /f ""skip=9 tokens=2* delims== "" %a in ('tasklist  /v /fo list /fi ""imagename eq notepad.exe""') do echo %b"
Set oExec = WshShell.Exec(strCommand)
WScript.Echo oExec.StdOut.ReadAll
Set
oExec = Nothing
Set
WshShell = Nothing

2008-3-27 21:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bd123456789
中级用户





积分 360
发帖 216
注册 2007-5-29
状态 离线
『第 3 楼』:  OK,比我想像的简单多了,也聪明多了

只要将双引号 再加个 双引号 就行!

@echo off 也很必要

我现在自己试了一个,即 只要是见引号 就分隔  是双引号的 """"(四个)代替 单引号的 "'" 用双引号括起来 这样也行,不过代码看上去就很烦了!

例:
msgbox "cmd /c for /f " & """" & "skip=9 tokens=2* delims== " & """" & " %%a in (" & "'" & "tasklist /v /fo list /fi " & """" & "imagename eq notepad.exe" & """" & "'" & ") do echo %%b"

2008-3-27 21:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 4 楼』:  

cmd模式调用%%b可以么?不是bat貌似不需要转义,忘了转义的话还能用不。。。

2008-3-27 23:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: