想做一个批处理,用来判断URL的可用性。代码如下:
@echo off & setlocal EnableDelayedExpansion
type nul > curl.txtfor /f "delims=" %%i in (URL.txt) do (
set link=%%i
for /f %%j in ('curl -o /dev/null -s -w %%{http_code} %%i') do ( set state=%%j )
echo !state!
if !state!==200 (echo !link! OK) else (echo !link! NG)
)
type curl.txt
pause>nul
明明!state!是200,但是却始终执行else的动作?想请问大神是哪里写错了吗?
服了。原来我是没有括号的,之前是没有开启延迟变量导致不行。开启后,重写时,加了括号。。。
追答开不开变量延迟跟有没有括号,是没关系的。其实do后面只执行一条命令时,没必要加括号。
我写代码时,如果加括号,无论是一条还是多条命令,都会直接换行。