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

[其他] 【已解决】BAT:如何添加循环语句

[复制链接]
发表于 2023-7-10 05:13:05 | 显示全部楼层 |阅读模式
本帖最后由 思想之翼 于 2023-7-10 11:28 编辑

@echo off
setlocal enabledelayedexpansion
for /L %%i in (1000 1 1999) do set "str=!str! %%i"
set "str=!str: 1= !"

(for /f "tokens=1* delims==" %%i in (d:\SJHY\000001\000001_01.txt) do (  '【标红处000001~100000】
        set "s=!str!"
        for %%k in (%%j) do set "s=!s: %%k=!"
        echo;%%i=!s:~1!
)) > e:\SJHY\000001\000001_01.txt    '【标红处000001~100000】
pause

问题:上述代码中
第6行 如何扩展循环语句为
d:\SJHY\000001\000001_01.txt
d:\SJHY\000002\000002_01.txt
...
d:\SJHY\100000\100000_01.txt

第10行 如何扩展循环语句为
e:\SJHY\000001\000001_01.txt
e:\SJHY\000002\000002_01.txt
...
e:\SJHY\100000\100000_01.txt

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-7-10 08:16:59 | 显示全部楼层
不知楼主要做什么。看不出给出的代码与下面1.txt和2.txt有何联系。
 楼主| 发表于 2023-7-10 08:37:24 | 显示全部楼层
回复 2# qixiaobin0715
感谢关注!
第6行      (for /f "tokens=1* delims==" %%i in (1.txt) do (
第10行    )) > 2.txt
发表于 2023-7-10 09:09:08 | 显示全部楼层
回复 3# 思想之翼
这个大家都看的出来。
1.没明白代码3-4、8-9行在这里起什么作用。
2.1.txt的内容是这样的吗:
  1. d:\SJHY\000001\000001_01.txt
  2. d:\SJHY\000002\000002_01.txt
  3. ...
  4. d:\SJHY\100000\100000_01.txt
复制代码
3.生成2.txt是这样的?
  1. e:\SJHY\000001\000001_01.txt
  2. e:\SJHY\000002\000002_01.txt
  3. ...
  4. e:\SJHY\100000\100000_01.txt
复制代码
 楼主| 发表于 2023-7-10 09:15:54 | 显示全部楼层
回复 4# qixiaobin0715

txt文件记录内容
王=000 002
五=001 003 005
...
李=002 006

欲取得“=”右侧数值的未出现数(000~999)

结果为
王=001 003 004 005...999
五=000 002 004 006...999
...
李=000 001 003 004 005 007...999
发表于 2023-7-10 09:40:36 | 显示全部楼层
你的意思是:
1.在目录d:\SJHY中有多个子文件夹,每个子文件夹下有一个文本文件;
2.按顶楼代码的方式分别处理这些文本文件,生成多个目标文件,按照上面的目录结构保存到e:\SJHY中。
是这样吗?
 楼主| 发表于 2023-7-10 10:00:04 | 显示全部楼层
回复 6# qixiaobin0715
是的,谢谢关注!
发表于 2023-7-10 10:14:34 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2023-7-10 10:19 编辑

大致思路是这样的,未测试,有问题可自己修改:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /L %%i in (1000 1 1999) do set "str=!str! %%i"
  4. set "str=!str: 1= !"
  5. for /f "delims=" %%a in ('dir /s /b /a-d *.txt') do (
  6.     md "e:%%~pa" 2>nul
  7.     (for /f "tokens=1* delims==" %%i in ('type "%%a"') do (
  8.         set "s=!str!"
  9.         for %%k in (%%j) do set "s=!s: %%k=!"
  10.         echo;%%i=!s:~1!
  11.     ))>"e:%%~pa%%~nxa"
  12. )
  13. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 乐于助人

查看全部评分

发表于 2023-7-10 10:21:58 | 显示全部楼层
把批处理文件放在目录d:\SJHY中
 楼主| 发表于 2023-7-10 10:43:55 | 显示全部楼层
本帖最后由 思想之翼 于 2023-7-10 11:22 编辑

回复 8# qixiaobin0715
感谢!
发表于 2023-7-10 10:47:59 | 显示全部楼层
你可以小批量的试试。文件多的话,时间就要长一些。
发表于 2023-7-10 10:51:08 | 显示全部楼层
回复 10# 思想之翼
没看到9楼的内容?
发表于 2023-7-10 10:55:19 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2023-7-10 10:57 编辑

e:\SJHY目录不用事先创建,自动生成,请看代码第6行md命令。
如果已创建,可删除这行代码
 楼主| 发表于 2023-7-10 11:03:35 | 显示全部楼层
本帖最后由 思想之翼 于 2023-7-10 11:22 编辑

回复 13# qixiaobin0715
感谢!
 楼主| 发表于 2023-7-10 11:13:54 | 显示全部楼层
本帖最后由 思想之翼 于 2023-7-10 11:22 编辑

回复 12# qixiaobin0715
感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 17:07 , Processed in 0.021084 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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