簡體   English   中英

批處理文件條件執行記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM