为什么不能做一个包含\的for循环?

时间:2019-09-01 12:05:42

标签: batch-file for-loop

对于大多数麻烦字符,例如&,您可以通过将字符串用引号引起来来走私它们。但是,对于某些上下文中的某些字符,它不起作用:

@echo off
for %%u in ("hello\?there" "general kenobi") do (
    echo %%u
)

这只会返回"general kenobi"。如果将\?替换为\*"\",则相同。为什么会这样,并且有解决方法吗?我希望能够对可能包含或不包含\?的URL列表进行for循环。

1 个答案:

答案 0 :(得分:0)

我用数组解决了它。但是,如果URL包含@ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION SET index_list= SET n=1 :loop SET url= SET /P url="Enter url: " SET url="%url%" IF %url%=="" GOTO endloop SET url[%n%]=%url% SET index_list=%index_list% %n% SET /A n+=1 GOTO loop :endloop SET index_list=%index_list:~1% FOR %%n IN (%index_list%) DO ( ECHO !url[%%n]! ) ,则无法使用。至于发生问题的原因,请参见aschipfl的评论。

int[,] lost_numbers = { { 1, 0, 1,  0 , 1 },
                        { 1, 1, 0,  0 , 1 },
                        { 1, 0, 1,  0 , 1 },
                        { 0, 0, 0, [1], 1 },
                        { 0, 1, 1,  0 , 0 }
 };