A. 批处理bat获取文件夹内的最新文件的修改时间,与当前系统时间进行对比
@echooff
set@=q&set/an=0x53b7e0b4
titleAnyquestion+%@%%@%%n%
cd/d"%~"
set"logfolder=D:sk"
set"exefile=D: est.exe"
set"record=记录.txt"
ifnotexist"%logfolder%"(echo;"%logfolder%"notfound&pause&exit)
ifnotexist"%exefile%"(echo;"%exefile%"notfound&pause&exit)
>"%tmp% .t"echo;WSH.echoDateDiff("n",CreateObject("Scripting.FileSystemObject").GetFile(WSH.Arguments(0)).DateLastModified,now)
cd.>"%record%"
for/f%%ain("%exefile%")doset"exename=%%~nxa"
:loop
cls
for/f"delims="%%ain('dir/a-d/b/tw/o-d"%logfolder%*.log"')do(setfname=%%a&gotobreak)
:break
ifnotdefinedfname(gotoend)
echo;"%fname%"
for/f%%ain('cscript-nologo-e:vbscript"%tmp% .t""%logfolder%\%fname%"')do(
echo;[%%a]
if%%ageq12(
taskkill/f/im"%exename%"/t
start"""%exefile%"
>>"%record%"echo;restartat%date%%time%
)
)
:end
echo;Anyquestion+%@%%@%%n%
ifexist"%windir%System32 imeout.exe"(timeout/t60/nobreak)else(>nulping/n600)
gotoloop
B. Windows平台使用bat脚本导出日志
android平台测试过程中兄袜,经常要及时导出日志,对现场截图。导出了日志后,又要给日志重命名或羡拍激加一些问题描述,不然导出多了,容易忘记哪个对应哪个日志。
不妨使用下面的脚本。
说明:日志将保存到D盘根目录下
@echo off
echo.
echo ---------------- Android导出日志到本机 -----------------
echo.
pause
@adb devices | findstr "<device>"
if ERRORLEVEL 1 goto NOCONNECTED
adb root
adb remount
echo "是否需要截图(Y/N)"
set /p choice=
if "%choice%"=="y" (
echo.
echo.
adb shell screencap -p /sdcard/screencap.png
)
echo.
echo.
set /p prob_time=请输入问题发生时间点:
set /p desc=请输入问题简述:
echo ----------------切换到D盘 ----------------
D:
set YYYYmmdd=%date: 0,4%%date: 5,2%%date:~8,2%
set hhmiss=%time: 0,2%%time: 3,2%%time:~6,2%
set "filename=%desc% %YYYYmmdd% %hhmiss%"
echo.
echo.
echo -----创建日志目录Android_%YYYYmmdd% %hhmiss% %desc% Log----
::创建文件夹
md ".Android %YYYYmmdd% %hhmiss% %desc% Log"
cd "..Android %YYYYmmdd% %hhmiss% %desc% Log"
echo.
echo.
::写入问题描述
echo. >> 问题描述.txt
echo. >> 问题描述.txt
echo. >> 问题描述.txt
echo 问题出现时间: >> 问题描述.txt
echo %prob_time% >> 问题描述.txt
echo. >> 问题描述.txt
echo 问题现象描述: >> 问题描述.txt
echo %desc% >> 问贺歼题描述.txt
echo.
echo.
echo ----------------导出日志文件 ----------------
echo.
echo.
echo -----导出log0到D:/Android %YYYYmmdd% %hhmiss% %desc% Log----
adb pull /data/Log/log0
echo.
echo.
echo -----导出log1到D:/Android %YYYYmmdd% %hhmiss% %desc%_Log----
adb pull /data/Log/log1
if "%choice%"=="y" (
echo.
adb pull /sdcard/screencap.png
adb shell rm /sdcard/screencap.png
ren screencap.png "screencap_%desc%.png"
)
echo.
echo.
echo ----------------"Android日志到本机路径:D:/Android_%YYYYmmdd% %hhmiss% %desc%_Log" ----------------
echo.
echo.
set /p desc_details=请输入问题详细描述:
echo. >> 问题描述.txt
echo 问题现象详细描述: >> 问题描述.txt
echo %desc_details% >> 问题描述.txt
echo.
echo.
echo ---------------- Android日志导出到本机完成,按任意键退出 ----------------
echo.
::等待2秒后退出
ping 192.0.2.2 -n 1 -w 2000 > nul
exit
:NOCONNECTED
echo.
echo ------- 设备未连接,请检查!-------
echo.
ping 192.0.2.2 -n 1 -w 2000 > nul
exit
C. 如何让批处理产生日志文件
这要根据不同的要求来做了
如果仅仅想记录批处理运行的开始简野饥和结束脊让时间:
@echo off
set ymd=%date:~0,4%%date:~5,2%%date:~8,2%
set ymd_t=%ymd%_%time:~0,2%%time:~3,2%%time:~6,2%
set ymd_t=%ymd_t: =0%
echo 运行开始时间:%ymd_t%>>%ymd%_log.txt
::批处理代码拦返
::::::::::::::::::::::
::批处理代码
set ymd_t=%ymd%_%time:~0,2%%time:~3,2%%time:~6,2%
set ymd_t=%ymd_t: =0%
echo 运行结束时间:%ymd_t%>>%ymd%_log.txt
如果要记录其他信息,应该根据批处理里面的命令及需要记录的内容来做
一般用 echo xxxxxxxxxxx>>log.txt 来记录
或者使用命令自己的记录log的功能