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

[文本处理] 批处理如何截取一段字符串中间的文本?

[复制链接]
发表于 2012-5-21 14:45:50 | 显示全部楼层 |阅读模式
executable    REG_SZ    C:\Program Files\a\a.exe

这种情况该怎么把C:\Program Files\a截取出来?我试过用\做分隔符,但c:\就没有了,用空格的话Program Files怎么处理?
发表于 2012-5-21 15:07:09 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ("executable    REG_SZ    C:\Program Files\a\a.exe") do (
  3.   set "str=%%a"
  4.   set "str=!str:*reg_sz=!"
  5.   for /f "tokens=*" %%b in ("!str!") do echo %%~dpb
  6. )
  7. pause
复制代码
 楼主| 发表于 2012-5-21 15:56:04 | 显示全部楼层
回复 2# apang
非常感谢,只是有些命令不太明白,有介绍批处理命令的帖子吗?
发表于 2012-5-21 16:00:41 | 显示全部楼层
回复 3# zjx4160zl

可以站内搜索
发表于 2012-5-21 19:52:57 | 显示全部楼层
发表于 2012-5-21 19:53:26 | 显示全部楼层
回复 4# apang


    你得给人家提供个关键字啊至少
 楼主| 发表于 2012-5-23 14:28:02 | 显示全部楼层
呵呵,我是新学Bat,有很多都不明白,%%~dpb是什么意思?
发表于 2012-5-23 14:42:34 | 显示全部楼层
 楼主| 发表于 2012-5-23 14:58:53 | 显示全部楼层
回复 8# apang


    所以,代码最后引用的其实是变量b?
 楼主| 发表于 2012-5-23 15:44:08 | 显示全部楼层
本帖最后由 zjx4160zl 于 2012-5-23 16:07 编辑
  1. setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('reg query HKCU\Software\Aerofox\foxmail\ /v  executable') do (
  3.   set "str=%%a"
  4.   set "str=!str:*reg_sz=!"
  5.   for /f "tokens=*" %%b in ("!str!") do echo %%~dpb
  6. )
  7. pause
复制代码
这段代码为什么会显示批处理所在的路径??
发表于 2012-5-24 09:31:26 | 显示全部楼层
回复 10# zjx4160zl

reg query命令显示的内容有很多行,你需要先定位到executable的那一行。试试看:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('reg query hkcu\Software\Aerofox\foxmail^|findstr /i "executable"') do (
  3.   set "str=%%a"
  4.   set "str=!str:*reg_sz=!"
  5.   for /f "tokens=*" %%b in ("!str!") do echo %%~dpb
  6. )
  7. pause
复制代码
 楼主| 发表于 2012-5-24 09:44:33 | 显示全部楼层
回复 11# apang


    是这个原因?可是多显示的信息是批处理所在的路径,代码里并没有这个命令啊。
发表于 2012-5-24 09:56:13 | 显示全部楼层
回复 12# zjx4160zl

reg query hkcu\Software\Aerofox\foxmail /v executable显示的内容应该是:

! REG.EXE VERSION 3.0

HKEY_CURRENT_USER\Software\Aerofox\foxmail
    executable  REG_SZ  C:\Program Files\Foxmail\Foxmail.exe
for循环读取这几行的内容,如果%%~dpb无法扩展,就显示批处理本身的驱动器和路径
 楼主| 发表于 2012-5-24 11:48:37 | 显示全部楼层
回复 13# apang


    非常感谢,终于明白了,这就回去改
发表于 2012-5-24 11:54:28 | 显示全部楼层
太难懂了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 04:59 , Processed in 0.021417 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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