【发布时间】:2016-11-01 15:01:39
【问题描述】:
我知道这个问题在这里被以各种形式和形式提出,我的语法似乎是正确的,我不明白我哪里出错了。
使用时
FOR /F "tokens=4 delims=." %%G IN ("7.1.2.12") DO ECHO This is G: %%G
在 cmd.exe 中,我得到了 12 的输出,正如预期的那样。
例如,如果我将该数字放入文件 version.txt 中
FOR /F "tokens=4 delims=." %%G IN (version.txt) DO ECHO This is G: %%G
我没有得到任何输出或错误,什么都没有!
即使是明确的目录
FOR /F "tokens=4 delims=." %%G IN (C:\Users\Myname\Desktop\version.txt) DO ECHO This is G: %%G
我查看了setlocal EnableDelayedExpansion,但认为它不适用于我的情况(我最终想将SET %%G 用于变量。)
旁注:我使用双 % 是因为我从批处理文件中运行它。
有什么想法吗? 需要更多信息吗?
【问题讨论】:
-
Errrrrm...我用从您的问题中复制的代码进行了测试...工作得很好。确保它们的名称完全相同并且在同一目录中;在批处理文件的末尾添加一个暂停并注释掉可能存在的
@echo off以查看执行时发生的每个步骤。使用它,您希望可以确定发生了什么。即使有一个领先的新行,它也可以很好地工作......唯一的想法是你可能没有保存文件/没有正确编写版本。这将导致未执行回声... -
检查文本文件的编码。应该是纯文本(在记事本中“另存为”编码“ANSI”)。
-
我之前确实见过 for 循环因缺少 ANSI 而被破坏。
-
创建version.txt的命令是什么?
-
如果
wmic输出被重定向到version.txt并稍后处理,请查看How to correct variable overwriting misbehavior when parsing output? 和cmd is somehow writing Chinese text as output 的答案。
标签: windows batch-file for-loop command-line cmd