标题: [文本处理] 用批处理形成另一个批处理 [打印本页]
作者: winsfly 时间: 2020-8-3 16:01 标题: 用批处理形成另一个批处理
本帖最后由 winsfly 于 2020-8-3 17:23 编辑
我想把下面的这段批处理用批处理输出到另一个批处理- @echo off
- setlocal enabledelayedexpansion
-
- for /l %%i in (1,1,100) do if not exist "对比结果%%i" set "folder=对比结果%%i" & goto :next
- :next
- if exist "对比结果\" rename "对比结果" "%folder%"
-
- md 对比结果
-
- for /f "delims=" %%i in (渠道交单数据.txt) do (find /i "%%i" 对比结果\渠道交单已去重.txt||echo %%i>>对比结果\渠道交单已去重.txt)
-
-
-
-
- (for /f %%i in ('type "对比结果\渠道交单已去重.txt"') do (
- set "OldStr=%%i"
- set "NewStr=!OldStr:~0,3!....!OldStr:~7,4!"
- findstr "!NewStr!" 系统后台数据.txt >nul 2>&1 || echo,%%i
- ))>"对比结果\未入系统数据.txt"
-
-
- findstr /g:对比结果\渠道交单已去重.txt 后台错误数据.txt >对比结果\渠道错误数据.txt
-
- set rowa=0
- for /f %%a in (对比结果\渠道交单已去重.txt) do if '%%a' neq '' set /a rowa+=1
-
- set rowb=0
- for /f %%b in (渠道交单数据.txt) do if '%%b' neq '' set/a rowb+=1
- echo 渠道交单%rowb%单 >对比结果\对比结果总结.txt
-
- set /a rowd=%rowb%-%rowa%
- echo 渠道交单重复%rowd%单 >>对比结果\对比结果总结.txt
-
- set rowc=0
- for /f %%c in (对比结果\渠道错误数据.txt) do if '%%c' neq '' set/a rowc+=1
- echo 渠道交单错误%rowc%单 >>对比结果\对比结果总结.txt
-
- set rowe=0
- for /f %%d in (对比结果\未入系统数据.txt) do if '%%d' neq '' set/a rowe+=1
- echo 未入系统%rowe%单 >>对比结果\对比结果总结.txt
-
- set /a youxiao=%rowb%-%rowd%-%rowc%-%rowe%
- echo 统计有效为%youxiao%单 >>对比结果\对比结果总结.txt
- exit
复制代码
把上面所有命令输出为另一个批处理1.cmd
不能用more语句,因为上面这些代码在另外一个批处理不同地方
作者: smss 时间: 2020-8-3 16:35
- (Echo for /l %%%%i in ^(1,1,100^)do if not exist "比对%%%%i" set "folder=比对%%%%i"^&goto :next)>1.bat
复制代码
作者: Batcher 时间: 2020-8-3 17:09
回复 1# winsfly
不能用more语句的原因是?
作者: winsfly 时间: 2020-8-3 17:14
回复 3# Batcher
因为我是一个庞大的批处理,只是想把这个批处理很多行的命令原封不动重新输出到另外一个批处理中
作者: winsfly 时间: 2020-8-3 17:16
回复 2# smss
%%i可以用%%%%i
假如是%i% 这种变量就不行了吧?
作者: Batcher 时间: 2020-8-3 19:36
回复 5# winsfly
%%i%%
作者: Batcher 时间: 2020-8-3 19:37
回复 4# winsfly
more也可以实现吧,看不出哪里有冲突呢
作者: 窄口牛 时间: 2020-8-4 08:43
第七行有个空格,是不是因为你这个原因?
作者: amwfjhh 时间: 2020-8-4 10:52
不确定地方也可以用more来输出啊。设置一个开始结束标记。用findstr /n找出其所在行数后不就可以用more进行定位输出了吗。
作者: winsfly 时间: 2020-8-4 12:04
回复 8# 窄口牛
大侠,特别谢谢您,不辞麻烦地帮我全部搞好了,
赞赞赞赞赞赞
作者: smss 时间: 2020-8-4 12:58
- (Echo @Echo off^&SetLocal EnableDelayedExpansion
- Echo for /l %%%%i in ^(1,1,100^)do if not exist "对比结果%%%%i" set "folder=对比结果%%%%i"^&goto :next
- Echo :next
- Echo if exist "对比结果\" ren "对比结果" "%%folder%%"
- Echo md 对比结果
- Echo for /f "delims=" %%%%i in ^(渠道交单数据.txt^)do ^(find /i "%%%%i" 对比结果\渠道交单已去重.txt^|^|echo %%%%i^>^>对比结果\渠道交单已去重.txt^)
- Echo ^(for /f %%%%i in ^('type "对比结果\渠道交单已去重.txt"'^)do ^(set "OldStr=%%%%i"^&set "NewStr=!OldStr:~0,3!....!OldStr:~7,4!"^&findstr "!NewStr!" 系统后台数据.txt ^>nul 2^>^&1^|^|echo,%%%%i^)^)^>"对比结果\未入系统数据.txt"
- Echo findstr /g:对比结果\渠道交单已去重.txt 后台错误数据.txt ^>对比结果\渠道错误数据.txt
- Echo set rowa=0
- Echo for /f %%%%a in ^(对比结果\渠道交单已去重.txt^)do if '%%%%a' neq '' set /a rowa+=1
- Echo set rowb=0
- Echo for /f %%%%b in ^(渠道交单数据.txt^)do if '%%%%b' neq '' set/a rowb+=1
- Echo echo 渠道交单%%rowb%%单 ^>对比结果\对比结果总结.txt
- Echo set /a rowd=%%rowb%%-%%rowa%%
- Echo echo 渠道交单重复%%rowd%%单 ^>^>对比结果\对比结果总结.txt
- Echo set rowc=0
- Echo for /f %%%%c in ^(对比结果\渠道错误数据.txt^)do if '%%%%c' neq '' set/a rowc+=1
- Echo echo 渠道交单错误%%rowc%%单 ^>^>对比结果\对比结果总结.txt
- Echo set rowe=0
- Echo for /f %%%%d in ^(对比结果\未入系统数据.txt^)do if '%%%%d' neq '' set/a rowe+=1
- Echo echo 未入系统%%rowe%%单 ^>^>对比结果\对比结果总结.txt
- Echo set /a youxiao=%%rowb%%-%%rowd%%-%%rowc%%-%%rowe%%
- Echo echo 统计有效为%%youxiao%%单 ^>^>对比结果\对比结果总结.txt
- Echo exit
- Echo pause)>1.bat
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |