2023年7月10日发(作者:)
批处理中屏蔽错误信息nul2nul的⽤法(cmdnul空格2nul)cmd批处理 nul 部分⽤法⽤法1:2>nul2>nul 是屏蔽操作失败显⽰的信息,如果成功依旧显⽰。如:在批处理⽂件所在路径下md(或者mkdir)创建名为test的⽂件夹,当此⽂件夹已经创建时会报错。使⽤2>nul 可屏蔽此提⽰md test 2>nul⽤法2:>nul (即1>nul)>nul 是屏蔽操作成功显⽰的信息,但是出错还是会显⽰(即1>nul)@符号是取消本⾏的输⼊显⽰如:例1:ping ⼀个IP地址。cmd中将⾸先显⽰,输⼊情况,c:useradministrator ping 192.168.1.1 ⽆论能不能ping通,界⾯⼀般会输出连续输出4⾏ping的情况。@echo offping 192.168.1.1
pause例2:在语句前加上@,不再显⽰输⼊情况。直接显⽰ping输出结果@echo off@ping 192.168.1.1pause例3:在语句末加上>nul,不再显⽰输出结果,由于添加了@,输⼊情况也不会显⽰。@echo off@ping192.168.1.1 >nulpause⽤法3:>nul 2>nul (即1>nul)屏蔽所有输出语句显⽰,⽆论成功或失败界⾯均不再提⽰关于"1>” "2>" "2>&1" 的具体意思标准输⼊(standard input)的⽂件描述符是 0标准输出(standard output)是 1标准错误(standard error)是 2>和>>都是重定向输出(>是覆盖,>>是追加)1> 指标准信息输出路径(也就是默认的输出⽅式)2> 指错误信息输出路径2>&1 指将标准信息输出路径指定为错误信息输出路径(也就是都输出在⼀起)补充问题4<&0:<和<<都是重定向输⼊<0指标准输⼊路径4<&0 指的是将⽂件描述符4指定为标准输⼊(实际可选4到9之间任意⼀个数字)grep "standard"* > 2>&1将包含"standard" 的⾏全部写⼊⽂件中,包括grep时发⽣错误的报错信息del >nul 2>nul这个">nul 2>nul"可以屏蔽⼀切屏幕的输出可以这样理解:假如执⾏⼀个命令,但是不想在屏幕⾥看到这个命令的执⾏情况,可以使⽤"[命令]>nul"就可以屏蔽命令在屏幕上的输出,但是有的命令执⾏会出错,即使⽤了">nul"也不能屏蔽命令产⽣的信息,所以就在后⾯加" 2>nul"这个,就是"[命令]>nul+空格+2>nul",这样,不管命令是否正确的运⾏,都不会在屏幕看到这个命令所产⽣的屏幕显⽰了。⽤"dir"命令可以显⽰当前⽬录的⽂件及⽂件夹列表,这时如果⽤"dir>nul",就看不见dir命令执⾏的屏幕输出了,那么再键⼊"dirr"时会显⽰" 'dirr' 不是内部命令,也不是外部命令,也不是批处理⽂件。",这时如果⽤"dirr>nul"来屏蔽这个错误,因为依然会出现" 'dirr' 不是内部命令,也不是外部命令,也不是批处理⽂件。"这个错误提⽰,这时如果⽤"dirr>nul 2>nul"的话,就在屏幕上看不到上⾯的出错提⽰了批处理中的****1>nul 2>nul是什么意思?1>nul 意思是不显⽰命令运⾏的正确提⽰2>nul 是不显⽰错误提⽰⼀起就是 正确错误的都不显⽰>是重定向符号nul是空设备的意思把提⽰输⼊到空设备就不显⽰了重定向你可以理解为 输⼊到 的意思实例:@taskkill /im /f /t >nul 2>&1经常看到“>nul 2>nul”是什么意思?功能就是不管前⾯的命令要显⽰什么信息都屏蔽掉,即不显⽰。2>nul 简析2>nul的2指错误输出句柄,2>nul表⽰将执⾏的错误结果输出到空设备nul,也就是不输出错误结果。例如。弱智 2>nul 将不显⽰'弱智' 不是内部或外部命令,也不是可运⾏的程序或批处理⽂件。就是说>nul 表⽰成功执⾏后不回显,2>nul 表⽰不成功执⾏后不回显>nul 2>nul 表⽰不管命令执⾏成功与否都不回显TASKKILL /F /IM >nul 2>&1讲解把标准输出流重定向到nul,把标准错误流重定向到标准输出流。输出到nul的内容会被直接丢弃,因此效果就是丢弃程序的⼀切输出。2>&1表⽰把标准错误流重定向到标准输出流。关于cmd命令的重定向输出 2>&1mycommand > 2>&1 应该是最经典的⽤法了。命令的结果可以通过“%>”的形式来定向输出,%表⽰⽂件描述符:1为标准输出stdout、2为标准错误stderr。系统默认%值是1,也就是“1>”,⽽1>可以简写为>,也就是默认为>。stdout的默认⽬标是终端,stderr的默认⽬标为也是终端。我们在批处理中执⾏: echo text > ,我们就可以在屏幕上会看到 echo text 1> ,即是这个道理。其中&需要直接与重定向符号结合使⽤。应⽤实例:1、将结果输出到 stop myservices >>result 2>&12、隐藏程序输出结果net stop myservices >nul 2>nul微软关于重定向的⽂章:使⽤命令重定向操作符可以使⽤重定向操作符将命令输⼊和输出数据流从默认位置重定向到其他位置。输⼊或输出数据流的位置称为句柄。下表将列出可⽤的句柄。句柄 句柄的数字代号 描述
STDIN 0键盘输⼊STDOUT 1输出到命令提⽰符窗⼝STDERR 2错误输出到命令提⽰符窗⼝UNDEFINED 3-9句柄由应⽤程序单独定义,它们是各个⼯具特有的数字 0 到 9 代表前 10 个句柄。可以使⽤命令 运⾏程序,并对该程序前 10 个句柄中的任何⼀个句柄进⾏重定向。要指定要⽤的句柄,请在重定向操作符之前键⼊该句柄的数字。如果未定义句柄,则默认的 < 重定向输⼊操作符是 0,⽽默认的> 重定向输出操作符是 1。键⼊ < 或 > 操作符之后,必须指定数据的读写位置。可以指定⽂件名或其他现有的句柄。要指定重定向到现有句柄,请使⽤与 (&) 字符,后⾯接要重定向的句柄号(即 &句柄号)。例如,下⾯的命令可以将句柄2(即 STDERR)重定向到句柄 1(即 STDOUT):2>&1下表列出了可⽤于重定向输⼊和输出数据流的操作符。重定向操作符 描述
> 将命令输出写⼊到⽂件或设备(如打印机),⽽不是命令提⽰符窗⼝或句柄。< 从⽂件⽽不是从键盘或句柄读⼊命令输⼊。>> 将命令输出添加到⽂件末尾⽽不删除⽂件中已有的信息。>& 将⼀个句柄的输出写⼊到另⼀个句柄的输⼊中。<& 从⼀个句柄读取输⼊并将其写⼊到另⼀个句柄输出中。| 从⼀个命令中读取输出并将其写⼊另⼀个命令的输⼊中。也称作管道。默认情况下,可以从键盘将命令输⼊(即 STDIN 句柄)发送到 ,然后由 将命令输出(即 STDOUT 句柄)发送到命令提⽰符窗⼝。重定向输⼊ (<)要通过键盘将输⼊重定向到⽂件或设备,请使⽤ < 操作符。例如,要从 获取 sort 命令的输⼊,请键⼊:sort< 的内容将以字母顺序列表的⽅式显⽰在命令提⽰符窗⼝中。< 操作符可以打开具有只读访问权限的指定⽂件名。因此,不能在使⽤该操作符时向⽂件中写⼊信息。例如,如果以 <&2 启动程序,则所有试图读取句柄 0 的操作都将失败,因为句柄 2 最初是以只写访问⽅式打开的。注意0 是 < 重定向输⼊操作符的默认句柄。重定向输出 (>)⼏乎所有的命令都将输出发送到命令提⽰符窗⼝。即使将输出发送到驱动器或打印机的命令也会在命令提⽰符窗⼝显⽰消息和提⽰。要将输出从命令提⽰符窗⼝重定向到⽂件或设备,请使⽤ > 操作符。可以在许多命令中使⽤该操作符。例如,要将 dir 输出重定向到 ,请键⼊:dir>如果 不存在, 将创建该⽂件。如果 存在, 将使⽤ dir 命令的输出替换⽂件中的信息。要运⾏ netsh routing dump 命令,然后将输出发送到 ,请键⼊:netsh routing dump>c:> 操作符可以打开具有只写访问权限的指定⽂件。因此,不能使⽤该操作符读取⽂件。例如,如果使⽤重定向操作符 >&0 启动程序,则写⼊句柄 1 的所有尝试操作都将失败,因为句柄 0 最初是以只读访问⽅式打开的。注意1 是 > 重定向输出操作符的默认句柄。复制句柄重定向操作符 & 可以将输出或输⼊从⼀个指定句柄复制到另⼀个指定的句柄。例如,要将 dir 输出发送到 并将错误输出发送到 ,请键⼊:dir>c: 2>&1复制句柄时,可以复制该句柄原状态的所有特性。例如,如果⼀个句柄具有只读访问的属性,则该句柄的所有副本都具有只读访问属性。不能将⼀个具有只读访问属性的句柄复制到另⼀个具有只写访问属性的句柄。使⽤ & 操作符重定向输⼊和副本要将重定向输⼊操作符 (<) 与复制操作符 (&) 结合使⽤,指定的⽂件必须已经存在。如果输⼊⽂件存在, 将以只读⽅式打开该⽂件,然后将⽂件包含的字符作为输⼊发送到此命令(如同从键盘输⼊⼀样)。如果指定了句柄, 将指定的句柄复制到系统现有的句柄中。例如,要以句柄 0 输⼊读取(即 STDIN)的⽅式打开 ,请键⼊:<要打开 ,并在内容排序后将输出发送到命令提⽰符窗⼝(即 STDOUT),请键⼊:sort<要查找 ,然后将句柄 1(即 STDOUT)和句柄 2(即 STDERR)重定向到 ,请键⼊:findfile > 2<&1要以句柄 0 输⼊读取(即 STDIN)的⽅式复制⽤户定义的句柄 3,请键⼊:<&3使⽤ & 操作符重定向输出和复制如果将输出重定向到⽂件且指定了现有的⽂件名, 将以只写⽅式打开⽂件并覆盖该⽂件内容。如果指定了句柄, 将⽂件复制到现有句柄中。要将⽤户定义的句柄 3 复制到句柄 1,请键⼊:>&3要将包括句柄 2(即 STDERR)的所有输出从 ipconfig 命令重定向到句柄 1(即 STDOUT),然后将输出重定向到,请键⼊:>> 2>&1使⽤ >> 重定向操作符附加输出要从命令中将输出添加到⽂件末尾⽽不丢失⽂件中已存在的任何信息,请使⽤两个连续的⼤于号(即 >>)。例如,使⽤下列命令可以将 dir 命令⽣成的⽬录列表附加到 ⽂件:dir>>要将 netstat 命令的输出附加到 的末尾,请键⼊:netstat>>使⽤管道操作符 (|)管道操作符 (|) 可以提取⼀个命令的输出(默认情况下是 STDOUT),然后将其定向到另⼀个命令的输⼊(默认情况下是STDIN)中。例如,使⽤下⾯的命令可以对⽬录进⾏分类:dir | sort在本例中,将同时启动两个命令,但随后 sort 命令会暂停,直到它接收到 dir 命令的输出为⽌。sort 命令使⽤ dir 命令的输出作为输⼊,然后将输出发送到句柄 1(即 STDOUT)。合并带重定向操作符的命令通过合并带有其他命令和⽂件名的筛选器命令,可以创建⾃定义命令。例如,可以使⽤以下命令存储包含“LOG”字符串的⽂件名:dir /b | find "log" 命令的输出是通过 find 筛选器命令进⾏发送的。包含字符串“LOG”的⽂件名作为⽂件名列表(例如,、 和 )存储在⽂件 中。要在相同命令中使⽤多个筛选器,请使⽤管道 (|) 分隔筛选器。例如,下⾯的命令将搜索 C 盘上的每个⽬录以查找包含“LOG”字符串的⽂件名,并且在命令提⽰符窗⼝中每次显⽰⼀屏:dir c: /s /b | find "log" | more利⽤管道 (|) 可以对 进⾏定向,使其通过 find 筛选器命令发送 dir 命令输出。find 命令只选择包含字符串“LOG”的⽂件名。more 命令可以显⽰ find 命令选择的⽂件名(在命令提⽰符窗⼝中每次显⽰⼀屏)。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1688986614a191865.html
评论列表(0条)