找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 75867|回复: 28

[文件操作] [已解决]批处理for命令怎样截取字符?

[复制链接]
发表于 2012-5-2 21:31:30 | 显示全部楼层 |阅读模式
大家好,我有个问题想求助一下。

首先来说这个命令“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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2012-5-2 21:38:07 | 显示全部楼层
回复 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:04 | 显示全部楼层
回复 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  输出了两次 又输出别的连接一次,我实在是没辙了,不好意思麻烦大家了~
发表于 2012-5-2 22:20:45 | 显示全部楼层
  1. netsh interface show interface | find "VMware Network Adapter VMnet"
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2012-5-2 23:16:56 | 显示全部楼层
把 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. )
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2012-5-3 12:26:35 | 显示全部楼层
回复 4# gawk


    多谢多谢,这个方法刚开始用了,但开始的时候不知道怎么输出
 楼主| 发表于 2012-5-3 12:28:40 | 显示全部楼层
回复 5# CrLf


    谢版主,我继续试验,我还有一事不明,我2楼代码的几个问题,为什么会出现那些问题
发表于 2012-5-3 15:37:40 | 显示全部楼层
回复 7# 秋风·飞扬


    因为CMD不认识%%a = VMware这种你自己发明的语法
 楼主| 发表于 2012-5-3 15:47:14 | 显示全部楼层
回复 8# gawk


    - - 好吧,新手上路多多指教,其实我的意思能不能让if 语句判断结果与字符串是否相等,相等 就输出那一行,我是不是应该吧VMware后面的全部写上?
发表于 2012-5-3 15:58:43 | 显示全部楼层
回复 9# 秋风·飞扬


    指教谈不上,先给个建议吧。当你想问是不是xxx或者xxx行不行之前,冷静一下,暂不发帖,亲自试试先。如果没有测试成功再问。还有,仔细数一数你的代码和别人的代码里各有几个等号。
发表于 2012-5-3 17:29:05 | 显示全部楼层
回复 9# 秋风·飞扬


    if /?
string1==string2  如果指定的文字字符串匹配,指定条件为 true。
 楼主| 发表于 2012-5-3 19:13:00 | 显示全部楼层
回复 10# gawk


    昨天确实山穷水尽了,水平在那里摆着呢,你也看出来了我这个号是新注册不久的,昨天连三个小时都在测试那个,我脑袋又笨,出现问题再所难免啊,左试右试都试不出来,才来发帖的
 楼主| 发表于 2012-5-3 19:13:53 | 显示全部楼层
回复 11# CrLf


    我就说有这个嘛,哈哈 ,放学了,去弄批处理
 楼主| 发表于 2012-5-3 19:14:39 | 显示全部楼层
回复 10# gawk


    等号的问题,这个以后我会注意的
 楼主| 发表于 2012-5-3 19:20:44 | 显示全部楼层
回复 10# gawk


    我的问题是不是很烦人?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 01:02 , Processed in 0.018934 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表