2

I am trying to escape ampersand in a FOR /F statement in windows command line script, as follows:

FOR /F "tokens=1,2 delims=^&" %%A IN ("%Var%") DO (...

Result from running the script is still:

 & was unexpected at this time

What is the correct way to use & as a delimeter? Or should it be replaced with something else in the string to be parsed?

4

2 回答 2

5

& 符号已经被双引号转义。所以更多的转义是没有必要和成功的:

@echo OFF &SETLOCAL
for /f "delims=&" %%i in (file) do echo %%i
于 2013-06-28T08:31:46.217 回答
2

正如 Endoro 已经说过的,你不需要&在你的 delims 规范中转义。

您的错误可能发生在"%Var%". 如果您的值包含两个引号,并且&&扩展后没有引用,那么这正是您将得到的错误。请记住,语句中的引号可以被值中的引号取消。

您可能可以使用延迟扩展来解决问题

setlocal enableDelayedExpansion
FOR /F "tokens=1,2 delims=&" %%A IN ("!Var!") DO (...

但是,如果您的值还包含!,那么您需要在扩展 FOR 变量之前禁用延迟扩展,否则扩展的值将被破坏。

setlocal enableDelayedExpansion
FOR /F "tokens=1,2 delims=&" %%A IN ("!Var!") DO (
  endlocal
  ...
)
于 2013-06-28T22:11:00.043 回答