标题: [其他] 【已解决】BAT:如何添加循环语句 [打印本页]
作者: 思想之翼 时间: 2023-7-10 05:13 标题: 【已解决】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
作者: qixiaobin0715 时间: 2023-7-10 08:16
不知楼主要做什么。看不出给出的代码与下面1.txt和2.txt有何联系。
作者: 思想之翼 时间: 2023-7-10 08:37
回复 2# qixiaobin0715
感谢关注!
第6行 (for /f "tokens=1* delims==" %%i in (1.txt) do (
第10行 )) > 2.txt
作者: qixiaobin0715 时间: 2023-7-10 09:09
回复 3# 思想之翼
这个大家都看的出来。
1.没明白代码3-4、8-9行在这里起什么作用。
2.1.txt的内容是这样的吗:- d:\SJHY\000001\000001_01.txt
- d:\SJHY\000002\000002_01.txt
- ...
- d:\SJHY\100000\100000_01.txt
复制代码
3.生成2.txt是这样的?- e:\SJHY\000001\000001_01.txt
- e:\SJHY\000002\000002_01.txt
- ...
- e:\SJHY\100000\100000_01.txt
复制代码
作者: 思想之翼 时间: 2023-7-10 09:15
回复 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
作者: qixiaobin0715 时间: 2023-7-10 09:40
你的意思是:
1.在目录d:\SJHY中有多个子文件夹,每个子文件夹下有一个文本文件;
2.按顶楼代码的方式分别处理这些文本文件,生成多个目标文件,按照上面的目录结构保存到e:\SJHY中。
是这样吗?
作者: 思想之翼 时间: 2023-7-10 10:00
回复 6# qixiaobin0715
是的,谢谢关注!
作者: qixiaobin0715 时间: 2023-7-10 10:14
本帖最后由 qixiaobin0715 于 2023-7-10 10:19 编辑
大致思路是这样的,未测试,有问题可自己修改:- @echo off
- setlocal enabledelayedexpansion
- for /L %%i in (1000 1 1999) do set "str=!str! %%i"
- set "str=!str: 1= !"
- for /f "delims=" %%a in ('dir /s /b /a-d *.txt') do (
- md "e:%%~pa" 2>nul
- (for /f "tokens=1* delims==" %%i in ('type "%%a"') do (
- set "s=!str!"
- for %%k in (%%j) do set "s=!s: %%k=!"
- echo;%%i=!s:~1!
- ))>"e:%%~pa%%~nxa"
- )
- pause
复制代码
作者: qixiaobin0715 时间: 2023-7-10 10:21
把批处理文件放在目录d:\SJHY中
作者: 思想之翼 时间: 2023-7-10 10:43
本帖最后由 思想之翼 于 2023-7-10 11:22 编辑
回复 8# qixiaobin0715
感谢!
作者: qixiaobin0715 时间: 2023-7-10 10:47
你可以小批量的试试。文件多的话,时间就要长一些。
作者: qixiaobin0715 时间: 2023-7-10 10:51
回复 10# 思想之翼
没看到9楼的内容?
作者: qixiaobin0715 时间: 2023-7-10 10:55
本帖最后由 qixiaobin0715 于 2023-7-10 10:57 编辑
e:\SJHY目录不用事先创建,自动生成,请看代码第6行md命令。
如果已创建,可删除这行代码
作者: 思想之翼 时间: 2023-7-10 11:03
本帖最后由 思想之翼 于 2023-7-10 11:22 编辑
回复 13# qixiaobin0715
感谢!
作者: 思想之翼 时间: 2023-7-10 11:13
本帖最后由 思想之翼 于 2023-7-10 11:22 编辑
回复 12# qixiaobin0715
感谢!
作者: qixiaobin0715 时间: 2023-7-10 11:24
回复 15# 思想之翼
子文件夹下有文本文件就可以啊,没看到代码第5行dir命令中加了参数\s吗
作者: 思想之翼 时间: 2023-7-10 11:30
回复 16# qixiaobin0715
感谢!是我思路狭窄了。代码运行正确。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |