簡體   English   中英

將 curl 命令輸出存儲在批處理腳本中的變量中

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

根據您自己的答案代碼,無需使用將結果保存到,然后將該變量值與已知值進行比較。 您可以通過管道結果以查看它是否與您的已知值匹配。

示例

@%__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

它實際上只有一行,為了可讀性而拆分,因此您可以在執行此操作:

%__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.

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