Board logo

标题: [文本处理] (已解决)求助批处理文本内容随机英文字母删除 [打印本页]

作者: linlianboy    时间: 2022-6-5 23:50     标题: (已解决)求助批处理文本内容随机英文字母删除

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

已解决,保留
作者: linlianboy    时间: 2022-6-6 12:26

大家帮忙看下怎么弄,这个问题困扰我好几天了,真没办法才**坛求助
作者: qixiaobin0715    时间: 2022-6-6 13:32

前面发的有错误,重新发一遍 :
回复 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
复制代码

作者: linlianboy    时间: 2022-6-6 21:47

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

已解决谢谢大家啊·····
作者: linlianboy    时间: 2022-6-6 21:49

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

test1111111
作者: linlianboy    时间: 2022-6-7 04:21

回复 3# xczxczxcz


    麻烦再帮忙看下
作者: qixiaobin0715    时间: 2022-6-7 10:16

回复 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
复制代码

作者: linlianboy    时间: 2022-6-8 11:20

回复 8# qixiaobin0715


    非常感谢您,测试了一下正常使用了
作者: qixiaobin0715    时间: 2022-6-9 10:02

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

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

回复 10# qixiaobin0715


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

俺在远景看WIN11的各种BUG,路过此处,发现你这么执着,唉。
作者: qixiaobin0715    时间: 2022-6-10 09:26

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

回复 11# xczxczxcz


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




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2