如何修复 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” 的相关文章

  • 如何在Windows 7中使用批处理脚本获取本地连接名称

    我正在编写一个简单的批处理脚本来检索 Windows 上的所有网络接口 但我只需要本地连接名称 本地连接接口名称不是默认名称 有没有办法使用批处理脚本仅检索本地连接名称作为字符串 不完全确定您在问什么 但我认为您的问题是您想要获取网络接口的
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 批处理文件 - 读取特定行,并将该行中的特定字符串保存为变量

    有没有办法让 for f 循环 或其他任何东西 读取特定行 这是我到目前为止的代码 它读取每一行的第一个单词 echo off set file readtest txt for f tokens 1 delims A in file do
  • Mercurial/extdiff 没有更改为临时目录(正如我认为应该的那样)

    使用 Windows Mercurial 和 extdiff 扩展 适用于 Mercurial 我试图设置 extdiff 以使用 WinDiff 作为外部比较工具 但我认为我已经将问题范围缩小到足以说明问题在我还没有做到这一点之前 根据我
  • 批量修改XML文件

    好的 所以我不太熟悉使用 For F 如果文件是静态的并且有一组可以跳过然后从中提取数据的行 我可以修改它 我目前正在尝试修改 XML 文件 该文件将具有不同数量的行 但始终具有以下内容
  • 从批处理文件中获取java版本

    如何获取java版本并希望从批处理文件中获取java版本中的 6 我尝试了下面的脚本 但没有成功 REM check java exists using JAVA HOME system variable if JAVA HOME ECHO
  • Windows Batch 帮助从命令输出设置变量[重复]

    这个问题在这里已经有答案了 我需要运行一个简单的 find 命令并将输出重定向到 Windows 批处理文件中的变量 我已经尝试过这个 set file ls find txt echo file 但这不起作用 如果我运行此命令 它可以正常
  • 让 Java 与 Windows 10 Ubuntu 一起使用

    我安装了 Windows 10 周年更新 以便可以在 Windows 上的 Ubuntu 上尝试 Bash 看如何安装 http www howtogeek com 249966 how to install and use the lin
  • 在批处理文件中添加 +1 到日期

    我有一个批处理文件 可以很好地创建今天的日期 现在我需要更新它以显示明天的日期 任何帮助深表感谢 echo off set TimeStamp 12 00 00 FOR F TOKENS 1 DELIMS A IN DATE T DO SE
  • 我想在 Windows 10 操作系统上安装 VB6。我需要处理 VBP 项目,所以我必须无缝安装 VB6

    我已经设置了VB6企业版 但无法完成安装 挂起 我已尝试通过以下链接安装程序 http nuke vbcorner net Tools VisualStudio6Installer tabid 93 language it IT Defau
  • Windows 10:如何防止切换或关闭应用程序

    我正在为 Windows 10 设备开发一个应用程序 该设备将在公共场所暴露给用户 并且其硬件按钮将无法访问 如何防止用户使用触摸屏手势关闭我的应用程序 使用分配的访问权限设置您的应用程序 http www winbeta org news
  • 忽略批处理文件中的百分号

    我有一个批处理文件 可将文件从一个文件夹移动到另一个文件夹 批处理文件是由另一个进程生成的 我需要移动的一些文件中包含字符串 20 move y myserver myfolder file 20name txt myserver othe
  • Qt 5.15 mingw 文件夹 bin 中缺少调试 dll *d.dll

    我通过 Qt 维护工具安装了 Qt Creator 和 Qt5 15 但我在 mingw 的 bin 文件夹中缺少像 QtCored dll 这样的调试 dll 我该怎么办 None
  • for循环批处理文件内的算术

    我在批处理文件中有一个 for 循环 如下所示 for y in 100 200 300 400 500 do set a x y 25 echo x 该行 set a x y 25 好像没有做任何划分 将每个 y 除以 25 的正确语法是
  • 排除批复制脚本中的文件夹

    我正在使用 U 盘上的批处理文件来备份我的照片 我使用以下命令 for r C x in jpg png gif do copy y x 我想排除邮件文件夹 WINDOWS 和 PROGRAM FILES 中的文件 有谁知道如何使用批处理文
  • 批处理文件 FOR /f 标记

    任何人都可以逐行准确解释以下代码是如何工作的 我真的迷路了 我一直在尝试学习如何使用 FOR 命令 但我不明白这一点 echo off for f tokens delims f in myfile do set line f call p
  • 使用 .bat 通过文件资源管理器打开文件夹

    我应该使用什么命令在程序末尾打开指定路径 start c Yaya yoyo 不管用 你可以这样尝试 SystemRoot explorer exe c Yaya yoyo
  • 如何获取 Window 10 中窗口内的 TextBox 控件的句柄

    我正在使用 C 进行 Windows 10 的自动化工作 其中一项任务是将数据写入名为 添加排除 的窗口中的文本框 为了进入这个窗口 打开设置 gt 更新和安全 gt Windows Defender gt 添加排除 gt 排除文件扩展名
  • 如何将 GIT 调用的输出获取到批处理脚本中的变量中?

    我有一个 git 命令来获取当前存储库的最新 SHA 如下所示 git log pretty format H n 1 我有一个 Windows 批处理脚本 我想按如下方式使用它 SET CURRENT SHA 但我不知道如何将从 git
  • 获取给定卷的驱动器号?

    给定硬盘卷名 如何在 Windows 7 中使用批处理文件获取驱动器号 Using 电源外壳 questions tagged powershell Get WMIObject Win32 logicaldisk where volumen

随机推荐