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

[文本处理] 用批处理形成另一个批处理

[复制链接]
发表于 2020-8-3 16:01:43 | 显示全部楼层 |阅读模式
本帖最后由 winsfly 于 2020-8-3 17:23 编辑

我想把下面的这段批处理用批处理输出到另一个批处理
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. for /l %%i in (1,1,100) do if not exist "对比结果%%i" set "folder=对比结果%%i" & goto :next
  4. :next
  5. if exist "对比结果" rename "对比结果" "%folder%"

  6. md 对比结果

  7. for /f "delims=" %%i in (渠道交单数据.txt) do (find /i "%%i" 对比结果\渠道交单已去重.txt||echo %%i>>对比结果\渠道交单已去重.txt)




  8. (for /f %%i in ('type "对比结果\渠道交单已去重.txt"') do (
  9.     set "OldStr=%%i"
  10.     set "NewStr=!OldStr:~0,3!....!OldStr:~7,4!"
  11.     findstr "!NewStr!" 系统后台数据.txt >nul 2>&1 || echo,%%i
  12. ))>"对比结果\未入系统数据.txt"


  13. findstr /g:对比结果\渠道交单已去重.txt 后台错误数据.txt >对比结果\渠道错误数据.txt

  14. set rowa=0
  15. for /f %%a in (对比结果\渠道交单已去重.txt) do if '%%a' neq '' set /a rowa+=1

  16. set rowb=0
  17. for /f %%b in (渠道交单数据.txt) do if '%%b' neq '' set/a rowb+=1
  18. echo 渠道交单%rowb%单 >对比结果\对比结果总结.txt

  19. set /a rowd=%rowb%-%rowa%
  20. echo 渠道交单重复%rowd%单 >>对比结果\对比结果总结.txt

  21. set rowc=0
  22. for /f %%c in (对比结果\渠道错误数据.txt) do if '%%c' neq '' set/a rowc+=1
  23. echo 渠道交单错误%rowc%单 >>对比结果\对比结果总结.txt

  24. set rowe=0
  25. for /f %%d in (对比结果\未入系统数据.txt) do if '%%d' neq '' set/a rowe+=1
  26. echo 未入系统%rowe%单 >>对比结果\对比结果总结.txt

  27. set /a youxiao=%rowb%-%rowd%-%rowc%-%rowe%
  28. echo 统计有效为%youxiao%单 >>对比结果\对比结果总结.txt
  29. exit
复制代码
把上面所有命令输出为另一个批处理1.cmd   
不能用more语句,因为上面这些代码在另外一个批处理不同地方
发表于 2020-8-3 16:35:32 | 显示全部楼层
  1. (Echo for /l %%%%i in ^(1,1,100^)do if not exist "比对%%%%i" set "folder=比对%%%%i"^&goto :next)>1.bat
复制代码
发表于 2020-8-3 17:09:21 | 显示全部楼层
回复 1# winsfly


    不能用more语句的原因是?
 楼主| 发表于 2020-8-3 17:14:59 | 显示全部楼层
回复 3# Batcher
因为我是一个庞大的批处理,只是想把这个批处理很多行的命令原封不动重新输出到另外一个批处理中
 楼主| 发表于 2020-8-3 17:16:18 | 显示全部楼层
回复 2# smss
%%i可以用%%%%i
假如是%i%  这种变量就不行了吧?
发表于 2020-8-3 19:36:38 | 显示全部楼层
回复 5# winsfly


    %%i%%
发表于 2020-8-3 19:37:23 | 显示全部楼层
回复 4# winsfly


    more也可以实现吧,看不出哪里有冲突呢
发表于 2020-8-4 08:43:24 | 显示全部楼层
第七行有个空格,是不是因为你这个原因?
发表于 2020-8-4 10:52:49 | 显示全部楼层
不确定地方也可以用more来输出啊。设置一个开始结束标记。用findstr /n找出其所在行数后不就可以用more进行定位输出了吗。
 楼主| 发表于 2020-8-4 12:04:57 | 显示全部楼层
回复 8# 窄口牛
大侠,特别谢谢您,不辞麻烦地帮我全部搞好了,

    赞赞赞赞赞赞
发表于 2020-8-4 12:58:59 | 显示全部楼层
  1. (Echo @Echo off^&SetLocal EnableDelayedExpansion
  2. Echo for /l %%%%i in ^(1,1,100^)do if not exist "对比结果%%%%i" set "folder=对比结果%%%%i"^&goto :next
  3. Echo :next
  4. Echo if exist "对比结果" ren "对比结果" "%%folder%%"
  5. Echo md 对比结果
  6. Echo for /f "delims=" %%%%i in ^(渠道交单数据.txt^)do ^(find /i "%%%%i" 对比结果\渠道交单已去重.txt^|^|echo %%%%i^>^>对比结果\渠道交单已去重.txt^)
  7. 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"
  8. Echo findstr /g:对比结果\渠道交单已去重.txt 后台错误数据.txt ^>对比结果\渠道错误数据.txt
  9. Echo set rowa=0
  10. Echo for /f %%%%a in ^(对比结果\渠道交单已去重.txt^)do if '%%%%a' neq '' set /a rowa+=1
  11. Echo set rowb=0
  12. Echo for /f %%%%b in ^(渠道交单数据.txt^)do if '%%%%b' neq '' set/a rowb+=1
  13. Echo echo 渠道交单%%rowb%%单 ^>对比结果\对比结果总结.txt
  14. Echo set /a rowd=%%rowb%%-%%rowa%%
  15. Echo echo 渠道交单重复%%rowd%%单 ^>^>对比结果\对比结果总结.txt
  16. Echo set rowc=0
  17. Echo for /f %%%%c in ^(对比结果\渠道错误数据.txt^)do if '%%%%c' neq '' set/a rowc+=1
  18. Echo echo 渠道交单错误%%rowc%%单 ^>^>对比结果\对比结果总结.txt
  19. Echo set rowe=0
  20. Echo for /f %%%%d in ^(对比结果\未入系统数据.txt^)do if '%%%%d' neq '' set/a rowe+=1
  21. Echo echo 未入系统%%rowe%%单 ^>^>对比结果\对比结果总结.txt
  22. Echo set /a youxiao=%%rowb%%-%%rowd%%-%%rowc%%-%%rowe%%
  23. Echo echo 统计有效为%%youxiao%%单 ^>^>对比结果\对比结果总结.txt
  24. Echo exit
  25. Echo pause)>1.bat
  26. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 03:53 , Processed in 0.019906 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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