возврат cURL пакетом с пробелом в строке - PullRequest
1 голос
/ 09 июля 2020

используйте cURL, чтобы получить значение MD5 строки, которую я передал ранее (% STR%).

Это работает нормально, но как только в %STR% появляются пробелы, код больше не работает.

Если я введу URL и %STR% в "", ничего больше не будет работать.

Вы можете мне помочь?

set STR=anystr
    
set CURL=C:\curl\bin\curl.exe
set MD5URL=https://anyurl.com/md5.php?hash=%STR%
    
for /F %%I in ('%CURL% -s %MD5URL%') do set HASH=%%I
    
echo HASH
pause

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Я предполагаю, что вы ищете что-то вроде этого:

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion

Set "HASH="
Set "CURL=C:\curl\bin\curl.exe"
Set "STR=any str"

Rem replace any space characters in %STR% with %20
SetLocal EnableDelayedExpansion
Set _=!STR: =%%20!
EndLocal & Set "STR=%_%"

Set "MD5URL=https://anyurl.com/md5.php?hash=%STR%"

For /F %%I In ('^""%CURL%" -s "%MD5URL%"^"') Do Set "HASH=%%I"

If Not Defined HASH GoTo :EOF

Echo %HASH%

Pause
0 голосов
/ 09 июля 2020

Пробелы - это разделители между командами и параметрами в пределах cmd, которые используются пакетными файлами. Так что сделайте двойные кавычки в ваших строках.

@echo off
set "str=anystr"
    
set "_curlcmd=C:\curl\bin\curl.exe"
set "MD5URL=https://anyurl.com/md5.php?hash=%str%"
    
for /F %%I in ('"%_curlcmd% -s "%MD5URL%"') do set "_HASH=%%I"
    
echo %HASH%
pause
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...