我有一个非常简单的批处理脚本,它读取一个txt文件并回显它的内容。脚本是:
@echo off
set WORK_BASE_DIR=%~dp0
set BUILD_TXT=%WORK_BASE_DIR%Build.txt
echo %BUILD_TXT%
set PRODUCT_BUILD=0.0
for /F %%i in ("%BUILD_TXT%") do set PRODUCT_BUILD=%%i
echo %PRODUCT_BUILD%
此脚本的输出为:
D:\Test Dir\Project1\Build.txt \\Correct
D:\Test \\Incorrect
如您所见,PRODUCT_BUILD
设置为文件的路径,而不是文件的内容。 build.txt文件位于同一目录中,它只包含一行:1.0.0000
如果我从""
语句中删除了for
,则表示找不到build.txt
文件,这是预期的,因为文件路径包含空格。
我有什么遗失的吗?
答案 0 :(得分:0)
根据for /F
的帮助(在命令提示符窗口中键入for /?
),引号表示文字字符串,除非您指定usebackq
选项:
for /F "usebackq" %%i in ("%BUILD_TXT%") do set "PRODUCT_BUILD=%%i"
此外,我建议使用上面引用的set
语法,这样可以避免特殊字符出现问题,并防止不可见的非预期尾随空格成为指定值的一部分。请注意,这仅在启用command extensions时有效,但这是每个现代Windows版本(基于Windows NT)的默认设置。