标题: [文本处理] 批处理怎样对外部程序的执行结果查找字符串,如果存在该字符并执行程序? [打印本页]
作者: psstudio 时间: 2017-1-16 11:47 标题: 批处理怎样对外部程序的执行结果查找字符串,如果存在该字符并执行程序?
比如说执行DIR C: 这个命令,执行结果是多行字符,我用- for /f "delims=" %%a in ('dir c:') do (
- if not exist "Music" do MD Music
- )
- PAUSE
复制代码
这个批处理好像并不能实现,请教大神用什么样的办法可以实现? 不要重定向到文件去二次处理!直接用FOR/F 可以实现吗? 或者这种要查找多行字符串的命令一定要用到findstr吗?
作者: flyinnet9 时间: 2017-1-16 14:31
本帖最后由 flyinnet9 于 2017-1-16 14:42 编辑
写脚本嘛,怎么简单怎么写,有简单的方法,为什么要用笨的方法?- dir c:\ /ad /b |findstr /i "music" ||md music
复制代码
- if not exist c:\music\ md music
复制代码
- for /f "delims=" %%a in ('dir c:\ /ad /b') do if /i "%%a"=="music" set f=1
- if not defined f md music
复制代码
作者: pcl_test 时间: 2017-1-16 18:25
回复 2# flyinnet9
用findstr还是加上匹配首尾比较严谨
作者: psstudio 时间: 2017-1-17 22:42
dir c:\ /ad /b |findstr /i "music" ||md music
这条代码简单,但是有个问题,比如说换成tree /F c:\tools | findstr /i "LanPing.cmd" || md 12
c:\tools目录里有这个文件但并不能建立目录,只会显示出该文件名。这个怎么解决??? 是FINDSTR的参数不够吗?
作者: psstudio 时间: 2017-1-17 22:47
经过测试楼上朋友的方法只针对 单行数据有效,如果一行数据里包含其它字符,上面这些命令都无效!~
作者: Nsqs 时间: 2017-1-17 22:50
本帖最后由 Nsqs 于 2017-1-17 22:53 编辑
回复 5# psstudio
运行输入 cmd /k dir/? 可以看到参数/ad改为/a-d就可以创建以文件名命名的文件夹
dir /b /a-d|findstr /i "music" ||md "music"
作者: psstudio 时间: 2017-1-17 22:52
比如说:像 pid=1756, owner=WIN7PROSP1\Administrator, cmd=cmd /c ""D:\Soft\nettest.bat" "
这类输出结果中查找指定字符串就无能为力了~,这类结果又有,号又有空格,还有/号 \号 :号。处理起来是不是很麻烦???
作者: GNU 时间: 2017-1-18 13:18
回复 5# psstudio
写代码是一件非常严谨的事情,你需要先把自己的需求、测试数据、希望得到的结果等信息描述完整,而不是别人给出代码之后你又说需求变啦所以代码不能用。
作者: GNU 时间: 2017-1-18 13:18
回复 7# psstudio
这类输出结果中查找哪个指定字符串?
作者: psstudio 时间: 2017-1-19 00:38
比如说像这个, pid=1756, owner=WIN7PROSP1\Administrator, cmd=cmd /c ""D:\Soft\nettest.bat" "
我要查找nettest.bat 这个字符串是否存在,比如万一这个程序名字变了就查找不到了。。。
nettest.bat这个字符串不存在就运行另外一条命令~
作者: GNU 时间: 2017-1-19 09:36
回复 10# psstudio
C:\>echo pid=1756, owner=WIN7PROSP1\Administrator, cmd=cmd /c ""D:\Soft\nettest.bat" " | findstr "nettest.bat"
pid=1756, owner=WIN7PROSP1\Administrator, cmd=cmd /c ""D:\Soft\nettest.bat" "
我这里测试没有发现问题
作者: psstudio 时间: 2017-1-19 20:37
本帖最后由 pcl_test 于 2017-1-19 22:22 编辑
回复 11# GNU
可能楼上的大哥没有理解到我的意思,你这个测试是正确的!
但是我比如说echo pid=1756, owner=WIN7PROSP1\Administrator, cmd=cmd /c ""D:\Soft\nettest.bat" " | findstr "nettest.bat" ||md 12
这一句,是不是应该这样理解,当这个字符串在前面的文字里能查找到就建立目录12? 但是,我测试不管能不能查找到都会建立。。所以我说上面这个语句应该是有问题的!
作者: psstudio 时间: 2017-1-19 22:09
还是用ERRORLEVEL来判定是比较准确 的~。。。感谢各位大哥。。。
作者: Batcher 时间: 2017-1-19 23:06
回复 12# psstudio
我测试的结果:
查找到,不创建。
查找不到,创建。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |