我正在使用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
)
)
答案 0 :(得分:1)
您可以将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