[英]Batch File Conditional execution logging
我正在使用curl將Windows中的REST與批處理腳本一起使用,將批量文件上傳到遠程服務器。 我需要跟蹤成功和失敗的事件。 對於不成功的事件,我想從遠程服務器捕獲JSON響應。
如果將追加添加到命令“ >> debug.log”,則可以捕獲所有事件; 但是我正在處理大約50k或更多的文件,因此我只想捕獲故障。 我嘗試只向“> debug.log”寫入一次文件,然后在下一個循環之前解析出該信息,但是如果我不追加文件,該文件將始終為空。
我將不勝感激任何建議。
for %%f in (*) do (
curl !url! --request POST --header "Accept:application/json" --header "Authorization:%auth%" -F "uploadFile=@%filepath%\%%f" >> %mypath%\%logfolder%\debuglog.txt && (
echo %filepath%\%%f success >> %mypath%\%logfolder%\successlog.txt
) || (
echo %filepath%\%%f error >> %mypath%\%logfolder%\errorlog.txt
REM set JSONDEBUG=
REM for /F "delims=" %%w in (%mypath%\%logfolder%\debuglog.txt) do ( set JSONDEBUG=!JSONDEBUG! %%w )
REM set JSONDEBUGPARSE=!JSONDEBUG:~11,-1!
REM echo !JSONDEBUGPARSE! >> %mypath%\%logfolder%\errorlog.txt
)
)
您可以將curl輸出寫入沒有附加的臨時文件中,然后在失敗分支中鍵入臨時文件並將其附加到日志中。 我添加了一些換行符,只是為了使內容更易於閱讀。
for %%f in (*) do (
curl !url! --request POST ^
--header "Accept:application/json" ^
--header "Authorization:%auth%" ^
-F "uploadFile=@%filepath%\%%f" > curltemp.txt && (
echo %filepath%\%%f success >> %mypath%\%logfolder%\successlog.txt
) || (
echo %filepath%\%%f error >> %mypath%\%logfolder%\errorlog.txt
type curlTemp.txt >> %mypath%\%logfolder%\debuglog.txt
REM set JSONDEBUG=
REM for /F "delims=" %%w in (%mypath%\%logfolder%\debuglog.txt) do ( set JSONDEBUG=!JSONDEBUG! %%w )
REM set JSONDEBUGPARSE=!JSONDEBUG:~11,-1!
REM echo !JSONDEBUGPARSE! >> %mypath%\%logfolder%\errorlog.txt
)
)
del curlTemp.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.