【问题标题】:FOR /F doesn't work when using it to read text fileFOR /F 在读取文本文件时不起作用
【发布时间】: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


【解决方案1】:

不确定这是否会有所帮助。但是今天下午我遇到了同样的问题,花了一个多小时才看到这个帖子。基本上,我通过“dir > version.txt”在 MS Powershell 中创建了那个“version.txt”,而 For /F 没有用。直到我删除了 version.txt,然后在 CMD 中重新运行相同的命令。然后 For /F 工作。

【讨论】:

    【解决方案2】:

    执行chcp 65001(脚本开头的utf-8)。 并将文件保存为 utf-8。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多