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

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

[复制链接]
发表于 2022-6-5 23:50:40 | 显示全部楼层 |阅读模式
本帖最后由 linlianboy 于 2022-6-15 22:33 编辑

已解决,保留

评分

参与人数 1PB -50 收起 理由
Batcher -50 请保留求助内容

查看全部评分

 楼主| 发表于 2022-6-6 12:26:23 | 显示全部楼层
大家帮忙看下怎么弄,这个问题困扰我好几天了,真没办法才**坛求助
发表于 2022-6-6 13:32:37 | 显示全部楼层
前面发的有错误,重新发一遍 :
回复 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
复制代码
 楼主| 发表于 2022-6-6 21:47:54 | 显示全部楼层
本帖最后由 linlianboy 于 2022-6-15 22:33 编辑

已解决谢谢大家啊·····
 楼主| 发表于 2022-6-6 21:49:34 | 显示全部楼层
本帖最后由 linlianboy 于 2022-6-15 22:33 编辑

test1111111
 楼主| 发表于 2022-6-7 04:21:03 | 显示全部楼层
回复 3# xczxczxcz


    麻烦再帮忙看下
发表于 2022-6-7 10:16:50 | 显示全部楼层
回复 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
复制代码
 楼主| 发表于 2022-6-8 11:20:44 | 显示全部楼层
回复 8# qixiaobin0715


    非常感谢您,测试了一下正常使用了
发表于 2022-6-9 10:02:13 | 显示全部楼层
xczxczxcz发帖指出代码有bug,确实如此。
上面代码只是根据楼主提供的文本片段来写的,是有局限性的。其必要条件为:
1.需要修改的含有日期信息的行中,以-分隔的列,日期信息必须在第4列;
2.其余行分隔后列数要小于4列。
不知是否是指上面2点,还是另有其它?
发表于 2022-6-9 11:29:12 | 显示全部楼层
我想xczxczxcz可能是指代码第10行,数据类型的转换会有bug,如果楼主的文本符合上面的2点必要条件,一般就不会出现问题,这里只是借用了一下。
发表于 2022-6-9 17:17:28 | 显示全部楼层
回复 10# qixiaobin0715


    你这么执着,唉!问题是  str-=1; 1楼的例子,-1显示没问题 到了6月30日没问题,下月1号   20220701,-1则成了20220700,7月0号? 若1楼把它作为纯数字处理当然没问题。估计1楼做事也是不仔细认真的那种( ),万一到了下月发现数字中有20220699,可以感觉怪怪的,但作为写程的人来说,一看到这样的数字,首先想到的就是要不要作日期处理。
发表于 2022-6-9 17:24:12 | 显示全部楼层
俺在远景看WIN11的各种BUG,路过此处,发现你这么执着,唉。
发表于 2022-6-10 09:26:09 | 显示全部楼层
回复 11# xczxczxcz
我觉得有时候执着并没有什么不好啊。谢谢,确实是很明显的bug,粗心了。这就是专业和业余的差别,粗心只是一个方面,可能这次忘了这个方面,下次又忽略了另一个地方。
 楼主| 发表于 2022-7-1 18:10:55 | 显示全部楼层
回复 11# xczxczxcz


    大佬,真的如您所说,今天有20220701b,直接被替换成了20220700了,正常应该是20220630的,请问下这种要怎么处理呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 20:31 , Processed in 0.024273 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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