[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样对外部程序的执行结果查找字符串,如果存在该字符并执行程序?

比如说执行DIR C: 这个命令,执行结果是多行字符,我用
  1. for /f "delims=" %%a in ('dir c:') do (
  2. if not exist "Music" do MD Music
  3. PAUSE
复制代码
这个批处理好像并不能实现,请教大神用什么样的办法可以实现? 不要重定向到文件去二次处理!直接用FOR/F 可以实现吗? 或者这种要查找多行字符串的命令一定要用到findstr吗?

本帖最后由 flyinnet9 于 2017-1-16 14:42 编辑

写脚本嘛,怎么简单怎么写,有简单的方法,为什么要用笨的方法?
  1. dir c:\  /ad /b |findstr /i "music" ||md music
复制代码
  1. if not exist c:\music\ md music
复制代码
  1. for /f "delims=" %%a in ('dir c:\ /ad /b') do if /i "%%a"=="music" set f=1
  2. if not defined f md music
复制代码
1

评分人数

TOP

回复 2# flyinnet9

用findstr还是加上匹配首尾比较严谨

TOP

dir c:\  /ad /b |findstr /i "music" ||md music
这条代码简单,但是有个问题,比如说换成tree /F c:\tools   | findstr /i "LanPing.cmd"   || md 12
c:\tools目录里有这个文件但并不能建立目录,只会显示出该文件名。这个怎么解决??? 是FINDSTR的参数不够吗?

TOP

经过测试楼上朋友的方法只针对 单行数据有效,如果一行数据里包含其它字符,上面这些命令都无效!~

TOP

本帖最后由 Nsqs 于 2017-1-17 22:53 编辑

回复 5# psstudio


   
运行输入 cmd /k dir/? 可以看到参数/ad改为/a-d就可以创建以文件名命名的文件夹
dir /b /a-d|findstr /i "music"   ||md "music"

TOP

比如说:像 pid=1756, owner=WIN7PROSP1\Administrator, cmd=cmd /c ""D:\Soft\nettest.bat" "
这类输出结果中查找指定字符串就无能为力了~,这类结果又有,号又有空格,还有/号 \号 :号。处理起来是不是很麻烦???

TOP

回复 5# psstudio


    写代码是一件非常严谨的事情,你需要先把自己的需求、测试数据、希望得到的结果等信息描述完整,而不是别人给出代码之后你又说需求变啦所以代码不能用。

TOP

回复 7# psstudio


    这类输出结果中查找哪个指定字符串?

TOP

比如说像这个, pid=1756, owner=WIN7PROSP1\Administrator, cmd=cmd /c ""D:\Soft\nettest.bat" "  
我要查找nettest.bat 这个字符串是否存在,比如万一这个程序名字变了就查找不到了。。。
nettest.bat这个字符串不存在就运行另外一条命令~

TOP

回复 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" "

我这里测试没有发现问题

TOP

本帖最后由 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? 但是,我测试不管能不能查找到都会建立。。所以我说上面这个语句应该是有问题的!

TOP

还是用ERRORLEVEL来判定是比较准确 的~。。。感谢各位大哥。。。

TOP

回复 12# psstudio


我测试的结果:
查找到,不创建。
查找不到,创建。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表