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

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

[复制链接]
 楼主| 发表于 2012-5-24 13:47:17 | 显示全部楼层
回复 2# apang
  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"            ::给str赋值
  4.   set "str=!str:*reg_sz=!"      ::分割Reg_SZ之前的字符并重新赋值给str
  5.   for /f "tokens=*" %%b in ("!str!") do echo %%~dpb       ::这段就不清楚了,看起来像是把str的值传递给b,然后显示出来,那a.exe是怎么去掉的呢?这个地方b的值难道不包含c:\Program files?后面为什么要用延迟扩展
  6. )
  7. pause
复制代码
好多不明白啊,这样理解有对的地方吗?
发表于 2012-5-24 16:10:47 | 显示全部楼层
回复 16# zjx4160zl
  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.   rem 给str赋值
  5.   set "str=!str:*reg_sz=!"
  6.   rem 删除Reg_SZ及Reg_SZ之前的字符并重新赋值给str,此时str值为"    C:\Program Files\a\a.exe"(不含引号)。
  7.   for /f "tokens=*" %%b in ("!str!") do echo %%~dpb
  8.   rem %%~dpb是对变量%%b的扩展,先去掉C:\Program Files\a\a.exe前面的空格,再扩展为驱动器和路径。
  9. )
  10. pause
复制代码
这下你该明白了
 楼主| 发表于 2012-5-25 10:41:37 | 显示全部楼层
回复 17# apang


    嗯,这段明白了,我今天有扩充了下,但貌似%%b不能直接引用,%%~dbp也不行,这个变量只能显示不能使用吗?
发表于 2012-5-25 12:13:03 | 显示全部楼层
将echo %%~dpb修改为set var=%%~dpb或set var=%%b,引用变量var的值即可
发表于 2012-5-26 01:03:10 | 显示全部楼层
回复 18# zjx4160zl
可以使用(仅此情况下)
  1. @echo off
  2. for /f "tokens=2*" %%a in ("executable    REG_SZ    C:\Program Files\a\a.exe") do set "str=%%~dpb"
  3. echo %str%
  4. pause
复制代码
 楼主| 发表于 2012-5-29 13:12:08 | 显示全部楼层
嗯,我的问题都解决了,非常感谢,现在来慢慢研究批处理
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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