CMD通过for读取文件

时间:2017-05-12 09:07:27

标签: batch-file for-loop cmd

我有一个非常简单的批处理脚本,它读取一个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文件,这是预期的,因为文件路径包含空格。

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:0)

根据for /F的帮助(在命令提示符窗口中键入for /?),引号表示文字字符串,除非您指定usebackq选项:

for /F "usebackq" %%i in ("%BUILD_TXT%") do set "PRODUCT_BUILD=%%i"

此外,我建议使用上面引用的set语法,这样可以避免特殊字符出现问题,并防止不可见的非预期尾随空格成为指定值的一部分。请注意,这仅在启用command extensions时有效,但这是每个现代Windows版本(基于Windows NT)的默认设置。