本帖最后由 回家路上 于 2015-8-18 14:14 编辑
回复 8# CrLf
嘿,果然诶。我试了试type真的可以展示文件内容。这就是我想要的。然后我转念一想,more会不会也可以呀,可以的话就更容易实现将日志输出到控制台。
一试果然可以,就做了一个DEMO。写的不好,但是行得通哈。- @echo off&if not %1.==. call%*&exit
- :: DEMO
- :: 模拟调用一个外部程序,将其输出记录入日志文件同时输出到控制台。
-
- set "logfile=%~dp0log.txt"
- set "tmpfile=%~dp0$tmp$"
- ::起一个线程读文件
- ::↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
- start /b %~s0 :showinfo %logfile% %tmpfile%
- ::↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
-
- if exist "%tmpfile%" del /q "%tmpfile%"
- if exist "%logfile%" del /q "%logfile%"
- for /l %%i in (3,-1,0) do ping -n 2 127.1 >nul&echo;%%i秒后开始执行并记录日志。。。
-
- ::模拟记录日志文件向文本输入文件
- call :writeinfo>%logfile% & cd.>%tmpfile%
-
- for /l %%i in (0,1,3) do ping -n 2 127.1 >nul&echo;完事了,再干点别的什么。
- pause & exit /b
-
- :showinfo
- set "logfile=%~1" & set "tmpfile=%~2"
- setlocal enabledelayedexpansion
- :show
- if exist "%~1" (
- if "%idx%" lss "0" for /f %%i in ('more !logfile!^|find /c /v ""') do set "idx=%%i"
- if "%idx%" geq "0" (
- for /f "delims=" %%i in ('more +%idx% !logfile!^|findstr /n .*') do (
- set info=%%i
- echo;!info:*:=!
- set /a idx+=1
- )
- )
- ping -n 1 127.1 >nul
- )
- if exist "!tmpfile!" (
- del /q "!tmpfile!"&goto :eof
- )
- goto :show
-
- :writeinfo
- if 1%a% geq 130 goto :eof
- set /a a+=1,gap=%random%%%5
- echo;%a%======%gap%======%a%
- ping -n %gap% 127.1 >nul
- goto :writeinfo
复制代码 谢谢啦。O(∩_∩)O! |