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

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

本帖最后由 思想之翼 于 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
1

评分人数

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

不知楼主要做什么。看不出给出的代码与下面1.txt和2.txt有何联系。

TOP

回复 2# qixiaobin0715
感谢关注!
第6行      (for /f "tokens=1* delims==" %%i in (1.txt) do (
第10行    )) > 2.txt

TOP

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

TOP

回复 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

TOP

你的意思是:
1.在目录d:\SJHY中有多个子文件夹,每个子文件夹下有一个文本文件;
2.按顶楼代码的方式分别处理这些文本文件,生成多个目标文件,按照上面的目录结构保存到e:\SJHY中。
是这样吗?

TOP

回复 6# qixiaobin0715
是的,谢谢关注!

TOP

本帖最后由 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

评分人数

TOP

把批处理文件放在目录d:\SJHY中

TOP

本帖最后由 思想之翼 于 2023-7-10 11:22 编辑

回复 8# qixiaobin0715
感谢!

TOP

你可以小批量的试试。文件多的话,时间就要长一些。

TOP

回复 10# 思想之翼
没看到9楼的内容?

TOP

本帖最后由 qixiaobin0715 于 2023-7-10 10:57 编辑

e:\SJHY目录不用事先创建,自动生成,请看代码第6行md命令。
如果已创建,可删除这行代码

TOP

本帖最后由 思想之翼 于 2023-7-10 11:22 编辑

回复 13# qixiaobin0715
感谢!

TOP

本帖最后由 思想之翼 于 2023-7-10 11:22 编辑

回复 12# qixiaobin0715
感谢!

TOP

返回列表