Board logo

标题: [文件操作] [已解决]批处理for命令怎样截取字符? [打印本页]

作者: 秋风·飞扬    时间: 2012-5-2 21:31     标题: [已解决]批处理for命令怎样截取字符?

大家好,我有个问题想求助一下。

首先来说这个命令“netsh interface show interface”
这个命令列出了本机上的一些连接
管理员状态           状态                            类型
----------------------------------------------------------------------------
启用               专用                             本地连接
启用               专用                               环回
启用               专用         VMware Network Adapter VMnet8
启用               专用         VMware Network Adapter VMnet1
---------------------------------------------------------------------------------
就简单列举这么多  我的目的 就是将VMware Network Adapter VMnet8
                                                VMware Network Adapter VMnet1
这两行单独列出来
虚拟机本地连接列表:
VMware Network Adapter VMnet1
VMware Network Adapter VMnet8
作者: 秋风·飞扬    时间: 2012-5-2 21:38

回复 1# 秋风·飞扬
  1. for /f "skip3 tokens=3*" %%a in  ('netsh interface show interface ') do (
  2. if %%a = VMware echo %%a
  3. )
复制代码
以上是我写的第一个代码,只能输出单词 ,①我试着吧3*改成3-6还是不行。
                                       ②不加delims=还好,加上了根本就什么都不输出了。
作者: 秋风·飞扬    时间: 2012-5-2 21:47

回复 2# 秋风·飞扬
  1. for /f "skip=3 tokens=3" %%a in ('netsh interface show interface') do (
  2. set /a n+=1
  3. if %%a =VMware  ( for /f  "skip=3 tokens=*" %%c in ('netsh interface show interface') do (
  4. set /a m+=1
  5. if !m!=!n! echo %%c & set m=0
  6. )))
复制代码
在接近崩溃的情况下 ,我的思维越来越复杂,就写出了这样一个代码。因为2楼的代码无论我怎么改都不能完整输出,所以我用这种匹配VWware关键字的方法来套一个for循环再整行输出,但是!输多了,VMware  Network Adaper VMnet 1  输出了两次 又输出别的连接一次,我实在是没辙了,不好意思麻烦大家了~
作者: gawk    时间: 2012-5-2 22:20

  1. netsh interface show interface | find "VMware Network Adapter VMnet"
复制代码

作者: CrLf    时间: 2012-5-2 23:16

把 for /f 掌握好了就不成问题
  1. @echo off
  2. for /f "tokens=2*" %%a in ('netsh interface show interface') do (
  3.    for "delims=0123456789" %%c in ("%%b") do (
  4.       if "%%c"=="VMware Network Adapter VMnet" echo %%b
  5.    )
  6. )
复制代码

作者: 秋风·飞扬    时间: 2012-5-3 12:26

回复 4# gawk


    多谢多谢,这个方法刚开始用了,但开始的时候不知道怎么输出
作者: 秋风·飞扬    时间: 2012-5-3 12:28

回复 5# CrLf


    谢版主,我继续试验,我还有一事不明,我2楼代码的几个问题,为什么会出现那些问题
作者: gawk    时间: 2012-5-3 15:37

回复 7# 秋风·飞扬


    因为CMD不认识%%a = VMware这种你自己发明的语法
作者: 秋风·飞扬    时间: 2012-5-3 15:47

回复 8# gawk


    - - 好吧,新手上路多多指教,其实我的意思能不能让if 语句判断结果与字符串是否相等,相等 就输出那一行,我是不是应该吧VMware后面的全部写上?
作者: gawk    时间: 2012-5-3 15:58

回复 9# 秋风·飞扬


    指教谈不上,先给个建议吧。当你想问是不是xxx或者xxx行不行之前,冷静一下,暂不发帖,亲自试试先。如果没有测试成功再问。还有,仔细数一数你的代码和别人的代码里各有几个等号。
作者: CrLf    时间: 2012-5-3 17:29

回复 9# 秋风·飞扬


    if /?
string1==string2  如果指定的文字字符串匹配,指定条件为 true。

作者: 秋风·飞扬    时间: 2012-5-3 19:13

回复 10# gawk


    昨天确实山穷水尽了,水平在那里摆着呢,你也看出来了我这个号是新注册不久的,昨天连三个小时都在测试那个,我脑袋又笨,出现问题再所难免啊,左试右试都试不出来,才来发帖的
作者: 秋风·飞扬    时间: 2012-5-3 19:13

回复 11# CrLf


    我就说有这个嘛,哈哈 ,放学了,去弄批处理
作者: 秋风·飞扬    时间: 2012-5-3 19:14

回复 10# gawk


    等号的问题,这个以后我会注意的
作者: 秋风·飞扬    时间: 2012-5-3 19:20

回复 10# gawk


    我的问题是不是很烦人?
作者: 秋风·飞扬    时间: 2012-5-3 19:53

回复 3# 秋风·飞扬
  1. for /f "skip=3 tokens=3" %%a in ('netsh interface show interface') do (
  2. set /a n+=1
  3. set m=0
  4. if  "%%a" ="VMware" for /f  "skip=3 tokens=*" %%c in ('netsh interface show interface') do (
  5. set /a m+=1
  6. if !m!==!n! echo %%c
  7. ))
复制代码
代码已改正,昨天脑袋让驴踹了,以至于问得别人烦了。    第一个for循环是提取字符 vmware 如果相等继续运行第二个for循环,上面循环的次数是n ,下面的是m ,m=n的时候就是VMware那一行,然后输出整行就可以了,上下skip要相等 否则会影响n 值和m值的比较
作者: 秋风·飞扬    时间: 2012-5-3 20:01

回复 4# gawk


    这个代码比我的简单实用,我又复杂了
作者: CrLf    时间: 2012-5-3 21:19

回复 14# 秋风·飞扬


    我刚写批的时候也总是搞混 if str1==str2 和 set var=str,写多见多了习惯就好,有其他语言基础也有助于理解
作者: 秋风·飞扬    时间: 2012-5-3 22:48

回复 18# CrLf


    谢谢版主鼓励
作者: 秋风·飞扬    时间: 2012-5-3 22:48

回复 16# 秋风·飞扬


    VM前面少了一个等号 - -
作者: gawk    时间: 2012-5-3 23:13

回复 15# 秋风·飞扬


    正常,初学者往往找不到最好的学习方法,多多改善就行了。
作者: 秋风·飞扬    时间: 2012-5-7 10:34

回复 2# 秋风·飞扬


    楼主明显对for命令的基础掌握不牢,提取多个字符你只用一个变量来接受??%%a %%b .........这样子才能显示出来,以后得细心一点
作者: 秋风·飞扬    时间: 2012-5-7 10:35

回复 22# 秋风·飞扬


    哦 谢谢,知道了,怪不得人家不愿意理这种问题
作者: 秋风·飞扬    时间: 2012-5-7 10:37

回复 23# 秋风·飞扬


    还有就是你问问题的时候先别着忙发帖,多试验几次,把你写的代码再规范一下,免得出瞅。
作者: 秋风·飞扬    时间: 2012-5-7 10:37

回复 24# 秋风·飞扬


    咱们两个号码一样的啊?名字也是一样的啊。你寄生在我的电脑里?你是黑客吗?
作者: 秋风·飞扬    时间: 2012-5-7 10:39

回复 25# 秋风·飞扬


    可以这么说。但这个不重要,我一直在帮你,AV网站是我屏蔽的,以后安心学习吧,游戏超过半小时就会自动退出的,其实我挺看好你的。
作者: 秋风·飞扬    时间: 2012-5-7 10:40

回复 26# 秋风·飞扬


    不要盗我号啊,我有好多贵重的文件
作者: 秋风·飞扬    时间: 2012-5-7 10:42

回复 27# 秋风·飞扬


    不会的。放心吧,我只是好奇你,但不会做什么恶劣的事情,好好学习吧,你自己混论坛吧,说实话,他们的技术资料我也看过了,技术是有但是写的不够大众化,你自己要慢慢理解,我下了。
作者: 秋风·飞扬    时间: 2012-5-7 10:42

回复 28# 秋风·飞扬


    额.............




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2