首页 > 解决方案 > 为什么我不能做一个包含 \ 的 for 循环?

问题描述

当涉及到最麻烦的字符时,例如&,您可以通过将字符串括在引号中来走私它们。但是,对于某些上下文中的某些字符,它不起作用:

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

这只是返回"general kenobi"。如果您替换\?\*or"或,则相同\"。为什么会这样,是否有解决方法?我希望能够使用可能包含或不包含的 URL 列表执行 for 循环\?

标签: batch-filefor-loop

解决方案


我用数组解决了它。但是,如果 URL 包含 ,则不起作用"。至于为什么会出现问题,请看 aschipfl 的评论。

@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]!
)

推荐阅读