如何修复 Windows 批处理文件 FOR 命令返回“活动代码页:65001”

2024-03-09

如果我正确理解这个批处理脚本

for /f "usebackq tokens=*" %%i in (`time /t`) do (
  echo "%%i"
)
echo "done"

应该只打印时间然后“完成”

相反,在我的机器上,Windows 10 Pro x64 它打印

>test.bat
>for /F "usebackq tokens=*" %i in (`time /t`) do (echo "%i" )
>(echo "Active code page: 65001" )
"Active code page: 65001"
>(echo "17:48" )
"17:48"
>echo "done"
"done"

为什么要这样做以及如何修复它,以便它只获取时间而不是“活动代码页:65001”结果。这会破坏构建脚本,因为无论 FOR 命令中使用什么命令,第一行始终是“活动代码页:65001”

需要明确的是,我正在寻找操作系统设置修复,而不是批处理文件的修复。我尝试运行的真正批处理文件来自开源项目中的构建脚本,并且由于此问题而失败。


当我们运行一个命令并得到正确的输出时,但它之前是另一个命令的输出,不知何故,这个意外的命令在我们预期的命令之前运行。

通常的怀疑是使用与我们调用的命令同名创建的批处理文件,但在本例中,time内部命令,但情况不可能如此,内部命令优先于外部命令(默认行为)。

If time是一个内部命令,怎么能调用另一个命令呢?

When for /f需要单独处理命令的输出cmd创建实例来执行该命令。在这个单独的实例中生成的输出由以下代码处理do的条款for /f命令。

这个单独实例的创建可能是意外输出的根源。

阅读显示的帮助信息cmd /?我们可以看到有两个注册表项

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

可以配置为每次新创建时运行命令cmd创建实例(除非/D启动时使用开关cmd实例)。

这是最有可能找到您获得此信息的原因的地方Active code page: 65001 output.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修复 Windows 批处理文件 FOR 命令返回“活动代码页:65001” 的相关文章

  • 如何在 IIS 10 上禁用 HTTP/2

    IIS 10 声称完全支持 HTTP 2 我想知道是否有办法在 IIS 10 上关闭 HTTP 2 要在 Windows 10 HTTP SYS 上禁用 HTTP 2 请在 Windows 10 桌面上的 HKEY LOCAL MACHIN
  • 为什么 Slack 会导致 Windows 10 BSOD?

    每次我从睡眠状态恢复笔记本电脑时 我都会遇到 BSOD 我已经使用分析了小型转储WinDbg并且引起的过程总是Slack exe 我用谷歌搜索了一下我发现了https www tenforums com bsod crashes debug
  • 批处理脚本 - IF EXIST 复制到 %localappdata% 错误

    我似乎被批处理脚本困住了 需要一些帮助 基本上我需要检查文件是否存在于文件夹中 localappdata 如果确实如此 则覆盖该文件 如果没有放置在不同的位置 那么目前它的内容如下 IF EXIST localappdata foldern
  • 如何将 Hudson/Jenkins 参数传递给 Windows 批处理命令

    好吧 我需要在我的 Hudson 作业中执行一个批处理文件 我有一个参数 Jenkis 参数 我需要将这个值 如参数 传递给批处理文件 我尝试了以下操作 Deploy cmd configuration DEPLOYCONFIGURATIO
  • Windows 10:任务栏中的图标大小错误

    从 Windows 10 开始 任务栏中的图标大小似乎为 24x24px 如果 Windows 选择图标文件中的 24px 版本进行显示 那么这不会有问题 但它选择了 32px 版本并将其缩小 这会导致丑陋的伪像 尤其是当你的图标中有直线时
  • MS Batch:检查驱动器是否正在使用

    我需要检查驱动器 Z 是否正在使用 例如 正在由应用程序使用 已打开 我的批处理文件如下所示 Mount Z wait 15 minutes check if drive Z is in use IF NOT unmount Z ELSE
  • 为什么非交互式批处理脚本认为我按下了 Control-C?

    因此 当输出日志中突然出现以下内容时 我的批处理脚本运行得很好 21 27 13 99 c apps w7lab scripting gt some command Error 3221225786 CTerminate batch job
  • 在 C# 中编写批处理脚本的好方法是什么?

    我想用 C 编写简单的脚本 我通常会使用 bat 或 4NT btm 文件 复制文件 解析文本 询问用户输入等等 相当简单 但在批处理文件中正确执行这些操作确实很困难 例如没有例外 我熟悉像 AxScript 这样的命令行 脚本 包装器 这
  • Windows 上的 git 忽略文件名大小写更改 [重复]

    这个问题在这里已经有答案了 我有一个reactjs应用程序 我正在将所有文件名标准化为小写以符合Nodejs 最佳实践 https devcenter heroku com articles node best practices stic
  • 无法在 cmd 中通过管道传递 cmdlet 对象

    我正在使用这个 powershell 命令来获取特定的用户配置文件 获取 WmiObject Class Win32 UserProfile Where Object LocalPath eq C Users Pela 但是当我通过调用 p
  • 批量检测系统是32位还是64位

    有谁知道如何创建一个批处理文件 如果是 64 位系统 可以对一个程序进行 shell 处理 如果是 32 位系统 则可以对另一个程序进行 shell 处理 检查 PROCESSOR ARCHITECTURE being x86 if PRO
  • 将目录添加到path环境变量

    我的要求是将目录之一添加到path安装我的应用程序时 Windows 中的环境变量并将其删除path使用批处理文件卸载时的环境变量 在与此相关的 stackoverflow 答案之一中 建议将目录添加到路径环境变量中 setx path C
  • 如何查找具有特定模式的文件夹和文件

    我想编写一个批处理文件 该文件将写入日志包含特定模式以及排除文件夹的所有文件和文件夹 但没有成功 ECHO OFF for r c x in david do echo x findstr f exclude txt c x gt nul
  • 如何通过批处理脚本检查进程是否正在运行

    如何检查应用程序是否正在从批处理 以及 cmd 文件运行 如果程序已经在运行 我不需要启动另一个实例 我无法更改应用程序以使其仅作为单个实例 该应用程序还可以以任何用户身份运行 我想到的另一种可能性 不需要保存文件 灵感来自于使用grep
  • Mercurial/extdiff 没有更改为临时目录(正如我认为应该的那样)

    使用 Windows Mercurial 和 extdiff 扩展 适用于 Mercurial 我试图设置 extdiff 以使用 WinDiff 作为外部比较工具 但我认为我已经将问题范围缩小到足以说明问题在我还没有做到这一点之前 根据我
  • 如何使用批处理文件将多个命令插入到批处理文件中

    我正在制作一个批处理文件 我们称之为 Create bat 它将创建一个批处理文件 我们称之为 Created bat 该文件将在其中插入多个命令 其中一条命令如下 FOR F x IN tasklist NH FI IMAGENAME e
  • 在进程完成之前,Windows cmd.exe 中的管道不会转发标准输出?

    考虑 Windows 命令 shell cmd exe 中的管道 C gt feed filter 直到进料过程运行完成之后 进料过程的标准输出似乎才达到过滤过程的标准输入 这种类型的 缓冲 可能会导致长时间运行的馈送过程的输出消息出现烦人
  • Windows 持久卷上的 Kubernetes

    Windows minikube 是否支持带有主机路径的持久卷 如果是这样 语法是什么 I tried apiVersion v1 kind PersistentVolume metadata name kbmongo002 labels
  • 找到第一个命中后停止 DIR 命令搜索

    在 CMD EXE 中我可以使用以下命令搜索某些内容DIR 以下面的例子为例 DIR C EXCEL EXE A D B S 虽然需要一段时间才能看清C 盘的整个结构 但是第一次匹配还是比较快的 Q 有没有办法自动地一旦发现命中 就停止命令
  • 从批处理文件中获取java版本

    如何获取java版本并希望从批处理文件中获取java版本中的 6 我尝试了下面的脚本 但没有成功 REM check java exists using JAVA HOME system variable if JAVA HOME ECHO

随机推荐