batch-file - 为变量赋予文本文件中的值

标签 batch-file

在你说已经有人问过之前,我知道。过去一个小时我一直在研究这个,但仍然不明白为什么它不起作用。我直接复制并粘贴了这个完全相同问题的答案中的代码,如下所示:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set vidx=0
pause
FOR /F "tokens=*" %%A IN (file.txt) do (
    SET /A vidx=!vidx! + 1
    set var!vidx!=%%A
    pause
)
set var

pause

现在,如果“file.txt”没有空格,则效果非常好。然而,如果文件名确实包含空格,那么整个事情都是徒劳的。我已将名称放在引号中,但程序所做的所有操作就是将 var1 设置为 =“带有空格的文件.txt”,仅此而已。事实上,无论空格如何,在任何地方放置引号都会搞砸一切。我确信这是一个非常简单的答案,我只是似乎找不到它。

非常感谢任何帮助!

最佳答案

尝试使用 useback (您也可以使用 usebackq)选项,该选项允许您使用双引号和空格指向文件路径:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set vidx=0
pause
FOR /F "useback tokens=*" %%A IN ("file.txt") do (
    SET /A vidx=!vidx! + 1
    set var!vidx!=%%A
    pause
)
set var

pause

事实上,M$ 没有很好地记录它(命令帮助消息摘录):

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]

FOR /F ["options"] %variable IN ("string") DO command [command-parameters]

FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

or, if usebackq option present:

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]

FOR /F ["options"] %variable IN ('string') DO command [command-parameters]

FOR /F ["options"] %variable IN (command) DO command [command-parameters]

关于batch-file - 为变量赋予文本文件中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39406489/

相关文章:

Windows 控制台 - BAT 兼容性

java - 导致在文件移动到特定文件时打开批处理文件

loops - 批处理 for 循环中的 Nslookup - 为什么它不起作用?

batch-file - 为什么我的批处理文件不能在 Windows CE 中运行?

batch-file - 从快捷方式链接中提取路径 - Windows 批处理

用于查找正确父文件夹的 Windows 批处理脚本

windows - 批处理文件对多个目录中的所有文件执行命令

java - 给出答案后计算器关闭

windows - Windows 批处理中 Bash 的 "-"是什么?

iphone - 如何在 OpenGL ES (iPhone) 中批量渲染 Sprite