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的功能