【问题标题】:CMD read file via for inCMD 通过 for in 读取文件
【发布时间】:2017-05-12 09:07:27
【问题描述】:

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

我有什么遗漏的吗?

【问题讨论】:

    标签: batch-file for-loop cmd


    【解决方案1】:

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

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

    另外,我建议使用如上所示的带引号的set 语法,这样可以避免特殊字符的问题,并防止不可见的意外尾随空格成为分配值的一部分。请注意,这仅在启用command extensions 时才有效,但无论如何这是每个现代 Windows 版本(基于 Windows NT)的默认设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 2011-05-03
      • 2017-10-26
      • 1970-01-01
      相关资源
      最近更新 更多