抑制命令行输出

2024-03-13

我有一个像这样的简单批处理文件:



echo off

taskkill /im "test.exe" /f > nul

pause
  

如果“test.exe”未运行,我会收到以下消息:



ERROR: The process "test.exe" not found.
  

即使我已将输出重定向到 NUL,为什么仍会显示此错误消息?

我怎样才能抑制该输出?


因为错误消息经常会转到stderr not stdout.

将调用更改为:

taskkill /im "test.exe" /f >nul 2>&1

一切都会变得更好。

这有效是因为stdout是文件描述符 1,并且stderr按照惯例,是文件描述符 2。 (0 是stdin,顺便说一下。)2>&1从刚刚重定向到空设备的新值 1 复制输出文件描述符 2。

此语法(松散地)借用自许多 Unix shell,但您必须小心,因为 shell 语法和 CMD.EXE 之间存在细微差别。

Update:我知道OP了解名为“文件”的特殊性质NUL我正在写信到这里,但评论者没有写,所以让我离题,在这方面提供更多细节。

一直追溯到 MS DOS 的最早版本,某些文件名由文件系统内核提示并用于引用设备。最早包含这些名字的列表NUL, PRN, CON, AUX and COM1通过COM4. NUL是空设备。它始终可以打开以进行读取或写入,可以在其上写入任何数量,并且读取总是成功但不返回任何数据。其他端口包括并行打印机端口、控制台和最多四个串行端口。从 MSDOS 5 开始,还有几个保留名称,但基本约定已经非常完善。

当 Windows 创建时,它最初是作为 MSDOS 内核之上的一个相当薄的应用程序交换层,因此具有相同的文件名限制。当 Windows NT 被创建为一个真正的操作系统时,其名称如下:NUL and COM1被广泛认为无法发挥作用而无法消除它们。然而,新设备总会获得会阻止未来用户使用这些名称来获取实际文件的名称,这种想法显然是不合理的。

Windows NT 和后续的所有版本(2K、XP、7 和现在的 8)都使用更精细的NT命名空间 http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx#nt_namespaces从内核代码到精心构造且高度不可移植的用户空间代码。在该名称空间中,设备驱动程序通过\Device文件夹。为了支持所需的向后兼容性,有一种特殊的机制使用\DosDevices实现任何文件系统文件夹中保留文件名列表的文件夹。用户代码可以使用通常的 Win32 API 下面的 API 层来浏览这个内部名称空间;探索内核命名空间的一个好工具是WinObj http://technet.microsoft.com/en-us/sysinternals/bb896657.aspx来自 Microsoft 的 SysInternals 小组。

有关 Windows 中文件(和设备)合法名称的规则的完整说明,MSDN 上的此页面 http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx既会提供丰富的信息,又会令人畏惧。规则是一个lot比应有的更复杂,并且实际上不可能回答一些简单的问题,例如“最长的合法完全限定路径名有多长?”。

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

抑制命令行输出 的相关文章

  • Windows 在 PATH 中搜索可执行文件的相对顺序是什么?

    如果我有a com a cmd a bat and a exe我的文件中的 PATH 如果我只调用该命令 Windows 会选择哪一个a 这是微软官方指定的吗 我只是想包裹我的gvim exe可执行文件 n 但是我的gvim bat似乎既不
  • 使用单个字符串查找多个文件路径

    我尝试编写一个批处理脚本来查找与输入字符串同名的文件的所有路径 现在它只能找到找到的第一个文件 我想不出一种方法让它列出多个文件位置 我经验不足 需要一些帮助 这是脚本代码的一部分 start cls echo Enter file nam
  • 如何理解批处理文件?

    我之前没有使用批处理文件或 shell 脚本的经验 我需要了解相关项目中使用的批处理文件所执行的操作 有没有资源提供批处理文件命令的详尽列表以及每个命令的作用 一旦您熟悉了一般的 BAT 文件信息 使用其他用户在其他答案中发布的一些有用信息
  • 如何为批量角色扮演游戏创建保存/加载命令?

    我正在制作一个基于文本的批量角色扮演游戏 RPG 最近才开始学习 我的 RPG 没有生命值之类的东西 它更像是故事类型的 RPG 基本上 你选择你想做的选项 然后继续故事 每个选项都可以改变结局 所以 我想知道是否有办法保存 RPG 中的
  • 如何运行 .bat 文件而不弹出 cmd 窗口?

    我有一个 bat 文件 我正在尝试在 Jenkins 中运行 Jenkins 作为服务运行 因此不会识别弹出窗口 有没有办法以静默模式运行这个 bat 文件 或者不允许弹出 cmd 窗口 那么你可以使用start命令与 min and b切
  • 批处理脚本一次运行多个 Jar 文件

    我有两个批处理文件 我想立即运行它们 所以我写了这个 echo off java jar happyjar jar java jar sadjar jar pause 当我运行脚本时 它首先运行 happyjar 然后运行 Sadjar 是
  • 区分大小写的字符串操作

    假设我们有一个变量 例如 set test This is a Test string 我们想要替换每个小写字母t与大写X如此期望的输出 This is a TesX sXring 我尝试使用字符串操作set test test t X 但
  • 如何从 CMake 运行 .bat 文件?

    如何在预链接或构建后事件中从 CMake 运行 bat 文件 你可以使用add custom command e g if WIN32 add custom command TARGET
  • bat 文件修改 web.config 设置

    我在 Visual Studio 2013 中创建了一个 Web 应用程序 我的 Web Config 文件中有此 appSetting
  • windows bat 文件中的 bang 字符是什么意思?

    我正在尝试更正一个使用 bang 字符的 bat 文件 我本来期望某种形式的引用 就像是 set some var some var 然后后来 some command some var 看起来第一个是在禁用回显的情况下提示输入 例如提示输
  • 如何创建 .bat 文件来运行 C# 代码?

    我需要的是 我有一个 C 代码 我想构建它以便在桌面上创建一个 bat 文件 因此 当我从桌面运行这个 bat 文件时 它应该执行 C 代码 有没有办法在编译之前更改 c 项目的设置或属性 以便创建应运行此 c 代码的 bat 文件 将 C
  • 使用javascript批量上传请求到Google Cloud Storage

    我正在尝试使用 javascript 在批量请求中将多个图像上传到谷歌云存储 我在用着https developers google com storage docs json api v1 how tos batch example ht
  • (此时出乎意料 - 批处理脚本

    我正在使用下面的批处理脚本并收到错误 这时候是出乎意料的 我知道问题出在第一行 但我不明白出了什么问题 有任何想法吗 script IF 1 LOOP1 SET P isDefault Value Missing do you want t
  • 从 Windows 批处理文件中检测 ANSI 兼容控制台?

    Windows 10 控制台主机 conhost exe has 对 ANSI 转义序列的本机支持 https msdn microsoft com en us library windows desktop mt638032 aspx 旧
  • 批量读取INI文件并将其设置为全局变量

    我有一个批处理文件 它已经做了很多事情 并试图扩展它以从 ini 文件中获取一些数据 例如 ini 文件看起来像这样 Settings1 Text Text Text1 Text Text2 Text Settings2 Text Text
  • 有没有办法回显所有驱动器/分区的列表,例如 C:\ D:\ E:\ 等并提示用户选择其中一个来执行某些功能?

    我想知道是否有一种方法可以检查并回显 PC 上所有可用驱动器 分区的列表 并提示用户通过输入字母并按 Enter 提交来选择其中一个 然后批处理文件将继续 理想的结果可能是怎样的 echo off echo List all drives
  • 如何使用 FOR 循环处理批处理文件中的“net use”命令错误输出?

    我在用着net use批处理文件中的命令用于连接远程位置 我想将它的输出存储到一个变量中并对其进行处理 当命令成功完成时 我的代码工作正常 但是 如果出现一些错误 例如密码错误 那么我无法将错误输出存储在变量中 它直接打印到正在运行脚本的控
  • 通过管道连接到 findstr 的输入

    我有一个文本文件 其中包含宏名称列表 每行一个 我的最终目标是打印宏名称在当前目录的文件中出现的次数 宏的名称位于C temp macros txt type C temp macros txt在命令提示符下可以正常打印列表 现在我想将该输
  • 使用批处理解析 XML 文件以从某些特定节点获取值

    对于每个节点列表有Lists作为其父节点 我想获取 保存前三个节点的变量值 即entry output and token 我知道如何使用 vbscript 来做到这一点 但对我来说 批量解决方案更有趣 请问可以做吗
  • 批处理脚本 FOR 循环仅设置输出的第一个字母 wsl --list -q

    我正在编写一个批处理脚本 将文件从 Windows 目录复制到 WSL 发行版 其中一部分是选择将文件复制到哪个发行版 如果我使用命令wsl list q如果给我以下输出 Ubuntu 22 04 Ubuntu 18 04 我正在尝试使用此

随机推荐

  • 二元炸弹第五阶段问题(我的第五阶段似乎和其他人不一样)

    所以我正在做一个二元炸弹作业 但陷入了困境 尝试查看其他问题和指南 但我的问题和指南似乎与我在网上找到的其他问题和指南中描述的完全不同 该阶段仅需要 2 个无符号整数作为输入 这里它在以 11 2 作为输入运行后在 gdb 中被反汇编 Du
  • 使用 Javascript 操作突出显示的文本

    你好 我正在尝试用 Javascript 开发一些代码 将突出显示的文本添加到类中 我想通过此实现的是使用自定义颜色突出显示文本的能力 我希望它看起来像下面这样 window getSelected span class window ge
  • 函数 insertMany() 无序:获取错误和结果的正确方法?

    看来MongoDBinsertMany 将有序选项设置为 false 的函数可以比将有序选项设置为 true 更有效地插入文档 并且即使多个文档插入失败也可以继续插入文档 但我发现没有干净的方法来获取每个失败文档的错误和总体命令结果 顺便说
  • 如何从android中的edittext中获取选定的文本?

    我有一个编辑文本 其中选择了一些文本 我只想通过单击按钮从 edittext 中获取选定的文本 请向我推荐可用的链接或示例代码 EditText et EditText findViewById R id edit int startSel
  • 如何在 JSF 中的表中动态添加行?

    在我的应用程序中 我需要单击按钮添加一行 并且该按钮将位于所有行中 需要帮助来做到这一点吗 项目类别 public class Item public Item private String value public Item String
  • 在java web应用程序中添加httponly和安全标志来设置cookie

    我想添加httponly and secureCookie 的标志 为了实现它 我正在使用Filters其配置在web xml 添加flag的代码如下 package com crisil dbconn import java io IOE
  • 无法在 IIS (Windows 10) 上运行 ASP.net 服务 - 错误 404(未找到)

    场景如下 Windows 10 VS2015 update 3 创建新的空白 空 asp net 项目 NET 4 5 2 并添加虚拟 index html 使用 IIS Express 默认 运行项目 运行良好 将服务器更改为 IIS 获
  • 在 Rails 中将时间从一个时区转换为另一时区

    My created at时间戳以 UTC 格式存储 gt gt Annotation last created at gt Sat 29 Aug 2009 23 30 09 UTC 00 00 如何将其中之一转换为 东部时间 美国和加拿大
  • Rails name_scope 与 has_and_belongs_to_many

    我有 3 个表 电影 film genres 用于连接 2 个表 和流派 在模型 film rb 中 has and belongs to many genres 在模型类型 rb has and belongs to many films
  • 在 TextMate 中将 RVM 与不同的 gemset 结合使用

    我已经设置了 RVM 并按照以下方式为我的项目制作了单独的宝石集RVM 最佳实践 http rvm beginrescueend com rvm best practices 现在在 TextMate 中运行测试文件不起作用 我已经在这里读
  • Laravel Mix 中的真实 ENV 值

    因此 在 Laravel Mix 中 文档中说我们可以向 env 文件添加以 MIX 为前缀的内容 然后我们可以在编译时在 JS 文件中访问它 我想我可能在这里遗漏了一些东西 因为这并没有真正提供与 env 文件类似的任何内容 因为在将资产
  • 在脚本中使用内置电子表格函数

    我是第一次使用 Google App Script 我在 Google Doc 电子表格上使用它 我正在尝试非常简单的功能 只是为了学习基础知识 例如这有效 function test hello return hello 但我对这个简单的
  • BEM CSS:相似块和样式共享

    阅读有关 BEM CSS 的内容并使用它编写了一些小型网站 我对它相当熟悉 但是 我仍然不确定如何处理非常相似但没有关系的块 假设我有很多无序列表块 它们的顶行都具有相同的样式 其他列表项可以以不同的方式布局 并且彼此完全无关 我发现自己给
  • 在 onPageFinished 事件之外将 Javascript 注入到 Web 视图中(使用 DatePicker 在 Web 视图的输入上设置日期)

    我有一个 Android 应用程序 运行一个加载特定页面的 WebView 也是该应用程序的一部分 我想使用 Android DatePicker 从用户那里获取日期 并在 WebView 页面内的输入上设置该值 当用户单击输入时 Date
  • UIWebView横向旋转不填充视图

    我的 UIWebView 遇到问题 当视图加载时 它会以任一方向加载 完美填充整个页面等 然而 如果我以纵向方式加载它 然后旋转设备 网络视图不会一直填充到右侧 我一生都无法弄清楚为什么 这是我的看法确实加载方法 void viewDidL
  • 创建 ViewModel:在模型数据可用之前还是之后进行?

    我有一个从数据源加载数据的 WPF 应用程序 在加载一些数据之前 没有任何内容可显示 我的问题是我是否 在任何数据可用之前创建V和VM 一旦可用 就在虚拟机中设置数据 一开始只创建V 等待数据可用 然后创建注入数据的虚拟机 仅在数据可用时创
  • 如何删除已删除的 git 子树文件夹的历史记录?

    我使用 git subtree 添加了一个 git 存储库 问题是我硬重置回使用 git subtree 添加存储库之前 现在提交历史记录仍在存储库中 但已与主服务器断开连接 知道如何删除它吗 我尝试了 git rm cached 但没有成
  • 跨多个表维护 Identity 值

    我们遇到的情况是 多个表中有一个名为 Customer Number 的列 该列是所有表中的标识列 但是有没有办法可以使该列在所有表中唯一 例如 如果我在 table one 中添加一行 并且标识列为其分配值 1 现在如果有人在 table
  • 从.ajax()调用加载knockout.js observableArray()

    这让我很困惑 这一定是我没看到的小事 我正在尝试加载一个非常简单的observableArray通过 ajax 调用进行淘汰赛 javascript we bind the array to the view model property
  • 抑制命令行输出

    我有一个像这样的简单批处理文件 echo off taskkill im test exe f gt nul pause 如果 test exe 未运行 我会收到以下消息 ERROR The process test exe not fou