标题: [文本处理] [已解决]批处理循环调用 [打印本页]
作者: aipca 时间: 2015-2-7 13:12 标题: [已解决]批处理循环调用
本帖最后由 aipca 于 2015-2-7 19:35 编辑
我有个文本1.txt
内容如下:复制代码
我用批处理每次选9行执行 然后十分钟以后 在调用下一个9行 以此类推 至到文本结束。
我现在用的方法是 用批处理将这文本里面的内容 提取出来 生存N个临时的BAT文件 然后每隔十分钟轮着按序CALL这些临时批处理文件,这样造成批处理文件太冗长 有没有办法 用一些简单的语句让批处理 自动去循环执行呢?- @echo off & setlocal enabledelayedexpansion
-
- for /f "tokens=1,* delims==" %%a in ('find "lin="^<config.ini') do (set kk=%%b)
-
-
- set filenames=0
- set filename=1
- set numbers=0
- md %cd%\temp >nul 2>&1
- for /f "delims=" %%a in (%CD%\1.txt) do (
- set /a numbers+=1
- set /a filenames+=1
- echo %%a>>temp\!filename!.bat
- if !numbers! geq %kk% (
- set /a filename+=1
- set numbers=0
- )
- )
-
- SET wait=ping -n 2 127.0.0.1 ^>^nul
- for /l %%n in (3,-1,0) do (
- rem cls
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo **************************************
- echo.
- echo %%n 秒开始执行第1组...
- echo.
- echo **************************************
- %wait%
- cls
- )
- if exist temp\1.bat (call temp\1.bat) else (goto other)
-
- SET wait=ping -n 2 127.0.0.1 ^>^nul
- for /l %%n in (600,-1,0) do (
- rem cls
- echo.
- echo.
- echo.
- echo.
- echo.
- echo.
- echo **************************************
- echo.
- echo %%n 秒开始执行第2组...
- echo.
- echo **************************************
- %wait%
- cls
- )
-
- if exist temp\2.bat (call temp\2.bat) else (goto other)
-
-
- :other
- cls
- echo.
- echo.
- echo.
- echo.
- echo.
- echo **************************************
- echo.
- echo 执行已全部完成
- echo.
- echo 请按任意键退出
- echo.
- echo **************************************
- del temp\*.bat
- pause >nul
- exit
复制代码
config.ini 是我配置的文件 设置了一次执行几条的变量数。如果按这种方式 假设我有99条的话 就要写11条的命令 如果更多的话 就要写更多的。
觉得这种办法太笨了 是不是有更方便的方法 来解决这个问题的?
作者: 凡凡之呗 时间: 2015-2-7 15:03
回复 1# aipca
你是怎么样控制时间的
作者: aipca 时间: 2015-2-7 15:28
回复 2# 凡凡之呗
for /l %%n in (600,-1,0) do (%wait%)
作者: pcl_test 时间: 2015-2-7 16:50
回复 1# aipca - @echo off&setlocal enabledelayedexpansion
- cd .>temp.bat
- set n=0
- for /f "delims=" %%i in (1.txt) do (
- if "!n!" neq "8" (
- echo %%i>>temp.bat
- set /a n+=1
- ) else (
- echo %%i>>temp.bat
- set n=0
- call temp.bat
- for /l %%a in (600,-1,0) do (
- cls
- echo 倒数%%a秒后运行下一批程序!请稍等。。。
- ping 127.1 -n 2 >nul
- )
- cd .>temp.bat
- )
- )
- pause
复制代码
作者: aipca 时间: 2015-2-7 19:25
回复 4# pcl_test
THX 非常棒 一下子把我的问题给解决了
作者: pcl_test 时间: 2015-2-7 19:30
回复 5# aipca
如果问题解决,请在标题最前面标上[已解决]
作者: aipca 时间: 2015-2-7 19:35
回复 6# pcl_test
OK 在次感谢
作者: aipca 时间: 2015-2-8 12:19
回复 4# pcl_test
追问一下 如何体现出 目前是运行了第几组呢?这样方便查询查看进度
作者: pcl_test 时间: 2015-2-8 12:36
回复 8# aipca - @echo off&setlocal enabledelayedexpansion
- cd .>temp.bat
- set n=0
- set m=0
- for /f "delims=" %%i in (1.txt) do (
- if "!n!" neq "8" (
- echo %%i>>temp.bat
- set /a n+=1
- ) else (
- echo %%i>>temp.bat
- set n=0
- call temp.bat
- set /a m+=1
- for /l %%a in (600,-1,0) do (
- cls
- echo 第!m!组程序已执行完毕。。。
- echo 倒数%%a秒后将执行下一组程序!请稍等。。。
- ping 127.1 -n 2 >nul
- )
- cd .>temp.bat
- )
- )
- pause
复制代码
作者: aipca 时间: 2015-2-8 13:04
回复 9# pcl_test
THX
作者: aipca 时间: 2015-2-11 16:49
回复 9# pcl_test
发现一个问题
如果1.txt里面行数 不是9的倍数(或不满9) 最后一轮 它不执行 。这要怎么解决?
作者: pcl_test 时间: 2015-2-11 17:11
回复 11# aipca
最后一行的pause前面插入一行call temp.bat复制代码
作者: aipca 时间: 2015-2-11 17:22
回复 12# pcl_test
原来是这样 太谢谢了
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |