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

[文本处理] [已解决]批处理正则表达式怎样对匹配的数字加1?

一份文件,其中需要将文件中引号中的数字加1,手动改是相当的麻烦,想到使用正则表达式统一修改,突然发现正则式仅是匹配,匹配后将原数字加1,似乎通过正则表达式无法实现,请坛中高手指点,有无好的解决方法...
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

请楼主附上文本格式。。。
***共同提高***

TOP

请楼主附上文本格式。。。
batman 发表于 2011-5-12 14:52

格式类似如下,现在要解决的问题是将页码后面引号中到数字加1,用正则表达式似乎无法做到这一点,正则似乎只能匹配,而不能修改:
<书签 文本="罗祖" 动作="打开外部PDF文档" 页码="5" 显示方式="坐标缩放" 左="保持不变" 上="保持不变" 路径="b95-3.pdf" 新窗口="否" />
                                <书签 文本="刘姓" 动作="打开外部PDF文档" 页码="6" 显示方式="坐标缩放" 左="保持不变" 上="保持不变" 路径="b95-3.pdf" 新窗口="否" />
                                <书签 文本="邵九娘" 动作="打开外部PDF文档" 页码="8" 显示方式="坐标缩放" 左="保持不变" 上="保持不变" 路径="b95-3.pdf" 新窗口="否" />
                                <书签 文本="巩仙" 动作="打开外部PDF文档" 页码="14" 显示方式="坐标缩放" 左="保持不变" 上="保持不变" 路径="b95-3.pdf" 新窗口="否" />
                                <书签 文本="二商" 动作="打开外部PDF文档" 页码="18" 显示方式="坐标缩放" 左="保持不变" 上="保持不变" 路径="b95-3.pdf" 新窗口="否" />
                                <书签 文本="沂水秀才" 动作="打开外部PDF文档" 页码="20" 显示方式="坐标缩放" 左="保持不变" 上="保持不变" 路径="b95-3.pdf" 新窗口="否" />

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=1-4* delims==" %%a in (a.txt) do (
  3.     for /f "tokens=1*" %%1 in ("%%d") do (
  4.         set /a a=%%~1+1
  5.         echo %%a=%%b=%%c="!a!" %%2=%%e
  6.     )
  7. ))>b.txt
  8. start b.txt
复制代码
1

评分人数

***共同提高***

TOP

4# batman
感谢版主回复,没有看懂,请版主解释一下这两个语句的意思:

set /a a=%%~1+1 这里面~是什么意思,%%~1,1这个数字也可以作为变量?
echo %%a=%%b=%%c="!a!" %%2=%%e :!a!又是什么意思?

TOP

%%~1是为了去掉%%1字符串中两边的引号

%%1可以作为for中的变量,不但如此%%+ %%.都可以,只是不常用罢了

!a!见变量延迟相关资料
***共同提高***

TOP

本帖最后由 ge_xin_yu 于 2011-5-13 01:12 编辑

6# batman

测试了一下,%%~1确实可以去除两边的引号,这个功能在批处理教程中似乎都未提到,我又测试了其他的符号,结论是只能去除引号,对于其他符号无效果,~是移位符,%%~1怎么理解呢? 我去除引号是用的set命令,比这个麻烦多了。。

如下的代码并不能去除字符串a中的引号,窗口一闪而过,请问版主是什么原因?
@ echo off
set a="bbs.bathome.cn"
echo %~a%
pause

TOP

只有 for 参数 %%a 扩展 %%~a 或批参数 %1 扩展 %~1 才可以这样用,其他变量不可以这样直接去掉最外左右的引号
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表