在批处理DOS中将文本文件中的行分配给变量

时间:2014-07-08 12:36:40

标签: file batch-file

我正在尝试运行此脚本

SETLOCAL EnableDelayedExpansion
ECHO Q
SET cnt=1
ECHO Q
FOR /F "tokens=* delims= usebackq" %%x IN ("%mytextfile.txt%") DO (
ECHO Q
    SET "PRJ_NAME=%%x"

我想将名称frm文本文件分配给变量PROJ_NAME。 它显示错误:此命令的语法不正确 " FOR / F"令牌= * delims = usebackq" %% x IN("%mytextfile.txt%")DO("此行 我该怎么办?

2 个答案:

答案 0 :(得分:0)

您应该收到DO was unexpected at this time错误,而不是您报告的错误。

如果您正在使用"命令提示符"在Windows下,然后会出现我提到的错误,因为do子句没有终止)

如果你使用真正的DOS,那么你会得到你的语法错误,因为DOS下不支持for /f,它是NT DOS模拟器引入的扩展,也不称为"命令提示符"但非正式地称为" DOS"。

答案 1 :(得分:0)

要从文本文件中读取一行并将其分配给环境变量,请使用:

FOR /F "delims=" %%x IN (mytextfile.txt) DO (
   SET "PRJ_NAME=%%x"
   rem more commands
)

但是只有当文件的全名不包含空格字符并且因此可以指定没有双引号时,这才有效。

但需要usebackq来激活双引号字符串的备用解析,文件名中包含1个或更多空格:

FOR /F "usebackq delims=" %%x IN ("my text file.txt") DO (
   SET "PRJ_NAME=%%x"
   rem more commands
)