[英]Store curl command output in a variable in batch script
我在網上嘗試了很多示例,但無法使其正常工作。 我是新手,所以請原諒我的原始問題。
說我有這個:
curl "www.google.com" -o /dev/null -s -w "%{http_code}\n"
在 cmd 窗口中運行它時,它會返回響應代碼。
200
正如預期的那樣。
我想在批處理腳本中做這樣的事情,但也使用 curl 命令的輸出來設置一個變量。 我在網上找到的所有例子都提出:
set res = $(curl "www.google.com" -o /dev/null -s -w "%{http_code}\n")
echo %res%
pause
或者像這樣
FOR /F "tokens=* USEBACKQ" %%F IN (`curl www.google.com -o /dev/null -s -w "%{http_code}\n"`) DO ( SET var=%%F )
ECHO %var%
pause
兩者都不起作用,我的批處理腳本立即關閉。
非常感謝任何反饋或幫助,謝謝。
正如他在上面@Compo 的評論中提到的:
“要在命令提示符處將命令結果作為變量,您可以使用For /F
”
@echo off
Title Store curl command output in a variable in batch script
Set "MyCommand=curl "www.google.com" -o NUL -s -w "%%{http_code}""
@for /f %%R in ('%MyCommand%') do ( Set VAR=%%R )
echo %VAR%
pause
感謝@Compo,這是為了他人的利益而格式化的答案。
@echo off
For /F %%G In ('%__AppDir__%curl.exe -s -o NUL "www.google.com" -w "%%{http_code}\n"') Do Set "response=%%G"
echo response code is %response%
IF %response% == 200 (
ECHO was able to ping google
) ELSE (
ECHO unable to ping google
)
pause
其他答案很好,但我不會使用 CURL 來測試我們是否可以訪問某個站點:
@echo off
ping google.com -n 1 >nul 2>&1
if %errorlevel% equ 1 (
echo EHHH..NO Google is not down, we are
) else (
echo HURRAH MAN We are OK
)
根據您自己的答案代碼,無需使用for 循環將結果保存到變量中,然后將該變量值與已知值進行比較。 您可以通過findstr管道結果以查看它是否與您的已知值匹配。
示例批處理文件:
@%__AppDir__%curl.exe -s -o NUL "www.google.com" -w "%%{http_code}" ^
| %__AppDir__%findstr.exe /X "200" 1> NUL && (Echo Ping Succeeded
) || Echo Ping Failed
@Pause
它實際上只有一行,為了可讀性而拆分,因此您可以在cmd 中執行此操作:
%__AppDir__%curl.exe -s -o NUL "www.google.com" -w "%{http_code}" | %__AppDir__%findstr.exe /X "200" 1> NUL && (Echo Ping Succeeded) || Echo Ping Failed
或者像這樣作為批處理文件:
@(%__AppDir__%curl.exe -s -o NUL "www.google.com" -w "%%{http_code}" | %__AppDir__%findstr.exe /X "200" 1> NUL && (Echo Ping Succeeded) || Echo Ping Failed) & Pause
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.