中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]怎样把一个命令返回结果中的指定内容赋值给变量
作者:
标题: [已结]怎样把一个命令返回结果中的指定内容赋值给变量 上一主题 | 下一主题
penicillin
新手上路





积分 19
发帖 10
注册 2008-12-19
状态 离线
『楼 主』:  [已结]怎样把一个命令返回结果中的指定内容赋值给变量

如何才能把一个程序得到的结果传给CMD的一个变量? 比如DIR一个目录得到这样一个结果: D:\>dir /b 驱动器 D 中的卷是 新加卷 D:\ 的目录 My Document TDDOWNLOAD 现在要把包含“W”的这一行所有内容做为变量initw的内容(即输入echo %initw%得到“tddownload”)。 如何实现呢? ————————————————————————————————— 转移自 DOS疑难解答 & 问题讨论 (解答室) 明显发错版块,因属论坛新手,故暂不予以处罚,望今后一起注意。 ——管理员 ————————————————————————————————— ───────────────── 版务记录 ───────────────── 执行:HAT 操作:[2008-12-20]在帖子标题中增加搜索关键字 说明:原标题"[求助]像这样的方案要如何用BAT实现?"不利于论坛搜索 处罚:论坛新人免于积分处罚 提示:建议阅读以下帖子 {1415}提问的智慧 {7326}论坛新手必读,所有人的基本行为准则 {22703}请不要做浮躁的人 {32667}[愤怒]那些连标题都写不清楚的人们啊,你们醒醒吧 {32825}本版严厉整顿烂帖 ───────────────── 版务记录 ───────────────── [ Last edited by penicillin on 2008-12-22 at 10:28 ]


2008-12-20 11:22
查看资料  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

@echo off
for /f "delims=" %%a in ('dir /b^|findstr "W"') do (
  set initw=%%a
)
echo %initw%
pause




2008-12-20 12:43
查看资料  发短消息  网志   编辑帖子  回复  引用回复
penicillin
新手上路





积分 19
发帖 10
注册 2008-12-19
状态 离线
『第 3 楼』:  

天噢! 呵呵~~~谢谢!! 程序运行得出的结果是用括号括起来的。 d:\MACScan.exe PCI0: (00-12-3F-0F-2D-B4)。 现在我用的是: @echo off for /f %%a in (‘MACScan.exe^|findstr "PCI"') do (set mac=%%a) set real=%mac:~5,-1% echo %real% pause>nul 结果为: (00-12-3F-0F-2D-B4) FOR能不能直接判断并抽取这行字括号以及里面的一部分呢,就是怕有时会有PCI10这样的情况,那上面那些行就截错地方了。? [[i] Last edited by penicillin on 2008-12-20 at 14:40 [/i]]


2008-12-20 13:51
查看资料  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  Re 3楼

@echo off
for /f "delims=" %%a in ('MACScan.exe^|findstr "PCI"') do (
  set mac=%%a
)
set real=%mac:*:=%
set real=%real:~1,-1%
echo %real%
pause




2008-12-20 16:28
查看资料  发短消息  网志   编辑帖子  回复  引用回复
penicillin
新手上路





积分 19
发帖 10
注册 2008-12-19
状态 离线
『第 5 楼』:  

感觉有点用旁边的字符来定位了……能不能直接用“括号”本身来定位呢?这样会不会是“不可实现”呢?


2008-12-20 17:22
查看资料  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  Re 5楼

@echo off
for /f "delims=" %%a in ('MACScan.exe^|findstr "PCI"') do (
  set mac=%%a
)
set real=%mac:*(=%
set real=(%real:~0,-1%
echo %real%
pause




2008-12-20 17:34
查看资料  发短消息  网志   编辑帖子  回复  引用回复
penicillin
新手上路





积分 19
发帖 10
注册 2008-12-19
状态 离线
『第 7 楼』:  

倒不是了。。。我是想那个右括号……用()本身做为界定符…… 像Linux正则表达式中的:(.)方式。这样,无论要选的那部份出现在哪,它都可以被公式正确找到~~~~ [ Last edited by penicillin on 2008-12-20 at 20:16 ]


2008-12-20 20:09
查看资料  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 8 楼』:  Re 7楼

是这个意思么?
@echo off
for /f "delims=" %%a in ('MACScan.exe^|findstr "PCI"') do (
  set mac=%%a
)
for /f "delims=)" %%a in ("%mac%") do (
  set real=%%a
)
set real=%real:~-18%)
echo %real%
pause




2008-12-20 20:16
查看资料  发短消息  网志   编辑帖子  回复  引用回复
penicillin
新手上路





积分 19
发帖 10
注册 2008-12-19
状态 离线
『第 9 楼』:  

差不多吧~,就是用MS的DIR来表达的话。。。这个公式大约以下的方式~~ dir *(*)* 找到以下的文件/目录 12313123(sdfasdfsafd)sdfsfsdf sdfsd(dfasfasdf)sadfas asfa(sfsffffffffffddddddddddd)sdfsdfsssssssss 然后把括号及括号中的结果提出来。结果为: (sdfasdfsafd) (dfasfasdf) (sfsffffffffffddddddddddd) 注:写三行仅是为了说明它的表现形式。 [ Last edited by penicillin on 2008-12-20 at 20:45 ]


2008-12-20 20:20
查看资料  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 10 楼』:  Re 9楼

这样?
@echo off
for /f "tokens=2 delims=()" %%a in ('MACScan.exe^|findstr "PCI"') do (
  set mac=%%a
)
set real=(%mac%)
echo %real%
pause


   此帖被 +3 点积分     点击查看详情   
评分人:【 moniuming 分数: +3  时间:2008-12-22 12:19




2008-12-20 22:21
查看资料  发短消息  网志   编辑帖子  回复  引用回复
penicillin
新手上路





积分 19
发帖 10
注册 2008-12-19
状态 离线
『第 11 楼』:  

嗯!------------谢谢HAT! @echo off for /f "tokens=2 delims=()" %%a in ('MACScan.exe^|findstr "PCI"') do set mac=(%%a) echo %mac% pause [ Last edited by penicillin on 2008-12-22 at 10:28 ]


2008-12-22 10:27
查看资料  发短消息  网志   编辑帖子  回复  引用回复

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


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



论坛跳转: