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

[文本处理] (已解决)求助批处理文本内容随机英文字母删除

本帖最后由 linlianboy 于 2022-6-15 22:33 编辑

已解决,保留
1

评分人数

大家帮忙看下怎么弄,这个问题困扰我好几天了,真没办法才**坛求助

TOP

前面发的有错误,重新发一遍 :
回复 2# linlianboy
  1. @echo off
  2. cd /d "D:\auto"
  3. setlocal enabledelayedexpansion
  4. (for /f "tokens=1-4* delims=-" %%a in (test.ini) do (
  5.     set str=%%d
  6.     set /a str=str
  7.     if !str! neq %%d set /a str-=1
  8.     echo,%%a----%%b----%%c----!str!----%%e
  9. ))>new_test.ini
复制代码

TOP

本帖最后由 linlianboy 于 2022-6-15 22:33 编辑

已解决谢谢大家啊·····

TOP

本帖最后由 linlianboy 于 2022-6-15 22:33 编辑

test1111111

TOP

回复 3# xczxczxcz


    麻烦再帮忙看下

TOP

回复 5# linlianboy
多加一层for循环和一个判断语句即可:
  1. @echo off
  2. cd /d "D:\auto"
  3. setlocal enabledelayedexpansion
  4. (for /f "delims=" %%i in (test.ini) do (
  5.     for /f "tokens=1-4* delims=-" %%a in ("%%i") do (
  6.         if "%%d"=="" (
  7.             echo,%%i
  8.         ) else (
  9.             set str=%%d
  10.             set /a str=str
  11.             if !str! neq %%d set /a str-=1
  12.             echo,%%a----%%b----%%c----!str!----%%e
  13.         )
  14.     )
  15. ))>new_test.ini
复制代码

TOP

回复 8# qixiaobin0715


    非常感谢您,测试了一下正常使用了

TOP

xczxczxcz发帖指出代码有bug,确实如此。
上面代码只是根据楼主提供的文本片段来写的,是有局限性的。其必要条件为:
1.需要修改的含有日期信息的行中,以-分隔的列,日期信息必须在第4列;
2.其余行分隔后列数要小于4列。
不知是否是指上面2点,还是另有其它?

TOP

我想xczxczxcz可能是指代码第10行,数据类型的转换会有bug,如果楼主的文本符合上面的2点必要条件,一般就不会出现问题,这里只是借用了一下。

TOP

回复 10# qixiaobin0715


    你这么执着,唉!问题是  str-=1; 1楼的例子,-1显示没问题 到了6月30日没问题,下月1号   20220701,-1则成了20220700,7月0号? 若1楼把它作为纯数字处理当然没问题。估计1楼做事也是不仔细认真的那种( ),万一到了下月发现数字中有20220699,可以感觉怪怪的,但作为写程的人来说,一看到这样的数字,首先想到的就是要不要作日期处理。
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

俺在远景看WIN11的各种BUG,路过此处,发现你这么执着,唉。
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

回复 11# xczxczxcz
我觉得有时候执着并没有什么不好啊。谢谢,确实是很明显的bug,粗心了。这就是专业和业余的差别,粗心只是一个方面,可能这次忘了这个方面,下次又忽略了另一个地方。

TOP

回复 11# xczxczxcz


    大佬,真的如您所说,今天有20220701b,直接被替换成了20220700了,正常应该是20220630的,请问下这种要怎么处理呀

TOP

返回列表