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

[文本处理] 批处理如何将文件名中指定部分的字符串与文本内指定位置的字符串作比较?

[复制链接]
发表于 2016-3-29 18:51:55 | 显示全部楼层 |阅读模式
L550_407B12-L4__16-03-29-3这个文件是要比对的,文件名的16-03-29-3和文件里面的20160329-31比对,现出现的情况是最后是单数,TXT文本里面的是双数,运行批处理文件检测不出来,不生成文件,求大神修改。有一个文件是批处理文件,我已经改成TXT格式了。

评分

参与人数 1PB -4 收起 理由
pcl_test -4 未按版规发帖

查看全部评分

发表于 2016-3-29 19:51:31 | 显示全部楼层
-3 是怎么变成 -31 的
发表于 2016-3-29 20:42:52 | 显示全部楼层
本帖最后由 happy886rr 于 2016-3-29 21:55 编辑

回复 1# iedcsve 应该是你要的吧
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /r %%a in (*.txt) do (
  3.         for /f "tokens=4-7 delims=_-" %%w in ("%%~na") do (set str=20%%~w%%~x%%~y-%%~z)
  4.         for /f "tokens=3" %%w in ('type "%%a"^|findstr /irc:"\$\$ SERIAL 20[0-9][0-9][0-1][0-9][0-3][0-9]-[0-9]*"') do (set std=%%~w)
  5.         if not "!str!"=="!std!" (set/a i+=1 &echo 编号:!i!     谬名文件%%~nxa     归属目录%%~dpa)
  6. ))>谬名清单.log
  7. start 谬名清单.log
复制代码

评分

参与人数 1技术 +1 收起 理由
iedcsve + 1 操作快捷,非常感谢

查看全部评分

发表于 2016-3-29 22:57:00 | 显示全部楼层
回复 1# iedcsve

只想说,31不是双数
 楼主| 发表于 2016-4-14 15:39:56 | 显示全部楼层
回复 2# CrLf
是出报告的时候手动输入的。
 楼主| 发表于 2016-4-14 15:49:54 | 显示全部楼层
回复 3# happy886rr

非常感谢你的回答,也有可能是我没有描述清楚,我们出报告的时候最后编号是手动输入的。
现在存在以下几种情况
第一种,文件名最后一位是单数,TXT文件里面是单数
第二种,文件名最后一位是单数,TXT文件里面是双数
第三种,文件名最后一位是双数,TXT文件里面是单数
第四种,文件名最后一位是双数,TXT文件里面是双数
以上四种情况都需要进行判断
是不是要先判断位数,再进行比对。
比如说我提供的文件名从16-03-29-3与TXT文本里面的20160329-31进行比对,也是从16开始,去掉中划线后,内外的编号必须一致,多空格也不行。
劳烦您根据以上内容再帮我改改。非常感谢。
发表于 2016-4-14 16:46:41 | 显示全部楼层
回复 7# iedcsve
晕,我的批处理就是按内外一致写的,不需要改,直接用就行。
 楼主| 发表于 2016-4-14 18:46:03 | 显示全部楼层
回复 8# happy886rr
不好意思,我上次用的时候没有用好,现在可以用了,非常感谢,代码能否帮我更新下,就是只有错误的时候才生成 谬名清单.log文件。麻烦了。
 楼主| 发表于 2016-4-14 19:36:51 | 显示全部楼层
回复 8# happy886rr
文件名内外正确的时候,也会生成错误文件,但里面是空的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 12:10 , Processed in 0.019243 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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