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

[文本处理] [已解决]批处理如何根据指定文本列出的数字号码段提取其他多个文本内容数字号码

批处理截取指定文本号码段内容问题
问题:
tmp 文件夹下有 N 个号码段文本(0000.txt;0001.txt;1250.txt等),工作需求是通过读取指定“截取号码段.txt”,截取 tmp 文件夹(0000.txt;0001.txt;1250.txt等)下相对映的号码段文本内容,输出到新建文本。
提示:号码段前4位为号码段文本名,5-11位为顺序码

结果如下图:


----------------------------------------------------------------------
之前 @aa77dd@163.com 在26楼时给的测试代码对 test 13位字符串测试结果是对的,但实际另一批产品字符串为14位,我改了下代码测试运行发现截取结果偏差很大(小弟吾水平太烂的原因)。后只能AT求助于 @pcl_test兄 得於解决。
在此:
非常感谢 @aa77dd@163.com @pcl_test  @codegay @WHY 坛友们的热心建议及帮助。

附件:
1

评分人数

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

本帖最后由 pcl_test 于 2016-9-30 12:53 编辑

1、不需要贴不能满足你需求的代码
2、优先文字说明,能用文字说明清楚的勿发图片
3、上传的附件需压缩打包
4、对应关系没有明确说明

TOP

回复 2# pcl_test


    谢谢,@pcl_test 老大的点醒,下次改正!

TOP

回复 4# pcl_test


    试了下代码,没输出

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,2 delims=-" %%a in ('type "截取号码段.txt"') do (
  3.     set "a=%%a"&set "b=%%b"
  4.     set "name=!a:~,4!"
  5.     if not defined #!name! set "#!name!=1"
  6.     for /l %%c in (1!a:~4^,7! 1 1!b:~4^,7!) do set "_!name!%%c=1"
  7. )
  8. for /f "tokens=1 delims=#=" %%a in ('set #') do (
  9.     for /f "delims=" %%i in ('type "%%a.txt"') do (
  10.         set "c=%%i"
  11.         for %%k in (!c:~4^,7!) do if defined _%%a1%%k echo;%%i
  12.     )
  13. )
  14. pause
复制代码

TOP

回复 4# winbat

cmd窗口没输出,还是没有输出到txt文本,还是什么都没输出?如果是没有输出到txt文本,自行添加

TOP

本帖最后由 pcl_test 于 2016-9-30 14:26 编辑

回复 6# pcl_test
……
        set "c=%%i"
        for %%k in (!c:~4^,7!) do if defined _%%a1%%k echo;%%i
     >>result.txt echo %%i
    )
)
pause

没截取成功,只是合并了几个要截取的号码段文本

TOP

本帖最后由 pcl_test 于 2016-9-30 14:57 编辑

回复 7# winbat

cmd窗口的输出结果呢?你确定你添加对了?
http://www.bathome.net/thread-2516-1-1.html

5楼11行
for %%k in (!c:~4^,7!) do if defined _%%a1%%k >>"学学基础知识.txt" echo;%%i

TOP

本帖最后由 pcl_test 于 2016-9-30 15:32 编辑

回复 8# pcl_test

CMD 没输出结果,输出文本都没生成

TOP

回复 9# winbat

不要重复贴码
把顶楼的除了result.txt之外的所有txt文件跟bat文件放一起运行

TOP

回复 10# pcl_test


    放了,都放在一个文件夹下运行的

TOP

回复 11# winbat

不改5楼的代码直接运行显示什么

TOP

回复 12# pcl_test


代码运行显示: “ 请按任意键继续. . .  ”
回车后,没输出生成文本

TOP

本帖最后由 pcl_test 于 2016-9-30 16:02 编辑

回复 13# winbat
  1. @echo off&setlocal enabledelayedexpansion
  2. if not exist "截取号码段.txt" echo;not exist
  3. for /f "tokens=1,2 delims=-" %%a in ('type "截取号码段.txt"') do (
  4.     set "a=%%a"&set "b=%%b"
  5.     set "name=!a:~,4!"
  6.     if not defined #!name! (
  7.         set "#!name!=1"
  8.         if not exist "!name!.txt" echo;!name! not exist
  9.     )
  10.     for /l %%c in (1!a:~4^,7! 1 1!b:~4^,7!) do set "_!name!%%c=1"
  11. )
  12. set #
  13. pause
复制代码
这样呢,显示什么

TOP

回复 14# pcl_test


显示:
  1. #0000=1
  2. #0001=1
  3. #1250=1
  4. 请按任意键继续. . .
复制代码

TOP

返回列表