在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
cmd批处理 nul 部分用法 用法1:2>nul 2>nul 是屏蔽操作失败显示的信息,如果成功依旧显示。 如:在批处理文件所在路径下md(或者mkdir)创建名为test的文件夹,当此文件夹已经创建时会报错。使用2>nul 可屏蔽此提示 md test 2>nul 用法2:>nul (即1>nul) >nul 是屏蔽操作成功显示的信息,但是出错还是会显示(即1>nul) @符号是取消本行的输入显示 如: 例1:ping 一个IP地址。cmd中将首先显示,输入情况,c:\user\administrator\ ping 192.168.1.1 无论能不能ping通,界面一般会输出连续输出4行ping的情况。
例2:在语句前加上@,不再显示输入情况。直接显示ping输出结果
例3:在语句末加上>nul,不再显示输出结果,由于添加了@,输入情况也不会显示。
用法3:>nul 2>nul (即1>nul) 屏蔽所有输出语句显示,无论成功或失败界面均不再提示 关于"1>” "2>" "2>&1" 的具体意思 标准输入(standard input)的文件描述符是 0 1> 指标准信息输出路径(也就是默认的输出方式) 补充问题4<&0: <和<<都是重定向输入
将包含"standard" 的行全部写入grep.out文件中,包括grep时发生错误的报错信息
这个">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 意思是不显示命令运行的正确提示 实例:
经常看到“>nul 2>nul”是什么意思? 功能就是不管前面的命令要显示什么信息都屏蔽掉,即不显示。 2>nul 简析 2>nul的2指错误输出句柄,2>nul表示将执行的错误结果输出到空设备nul,也就是不输出错误结果。 例如。弱智 2>nul 将不显示'弱智' 不是内部或外部命令,也不是可运行的程序或批处理文件。 就是说>nul 表示成功执行后不回显,2>nul 表示不成功执行后不回显 TASKKILL /F /IM a.exe >nul 2>&1讲解 把标准输出流重定向到nul,把标准错误流重定向到标准输出流。
关于cmd命令的重定向输出 2>&1 mycommand >mylog.txt 2>&1 应该是最经典的用法了。 命令的结果可以通过“%>”的形式来定向输出,%表示文件描述符:1为标准输出stdout、2为标准错误stderr。系统默认%值是1,也就是“1>”,而1>可以简写为>,也就是默认为>。stdout的默认目标是终端,stderr的默认目标为也是终端。我们在批处理中执行: echo text >result.txt ,我们就可以在屏幕上会看到 echo text 1>result.txt ,即是这个道理。 应用实例: 1、将结果输出到result.txt
2、隐藏程序输出结果
微软关于重定向的文章:使用命令重定向操作符 可以使用重定向操作符将命令输入和输出数据流从默认位置重定向到其他位置。输入或输出数据流的位置称为句柄。 句柄 句柄的数字代号 描述 数字 0 到 9 代表前 10 个句柄。可以使用命令 Cmd.exe 运行程序,并对该程序前 10 个句柄中的任何一个句柄进行重定向。要指定要用的句柄,请在重定向操作符之前键入该句柄的数字。如果未定义句柄,则默认的 < 重定向输入操作符是 0,而默认的 > 重定向输出操作符是 1。键入 < 或 > 操作符之后,必须指定数据的读写位置。可以指定文件名或其他现有的句柄。 2>&1 下表列出了可用于重定向输入和输出数据流的操作符。 重定向操作符 描述 默认情况下,可以从键盘将命令输入(即 STDIN 句柄)发送到 Cmd.exe,然后由 Cmd.exe 将命令输出(即 STDOUT 句柄)发送到命令提示符窗口。 重定向输入 (<) 要通过键盘将输入重定向到文件或设备,请使用 < 操作符。例如,要从 File.txt 获取 sort 命令的输入,请键入: sort<file.txt File.txt 的内容将以字母顺序列表的方式显示在命令提示符窗口中。 < 操作符可以打开具有只读访问权限的指定文件名。因此,不能在使用该操作符时向文件中写入信息。例如,如果以 <&2 启动程序,则所有试图读取句柄 0 的操作都将失败,因为句柄 2 最初是以只写访问方式打开的。 注意 0 是 < 重定向输入操作符的默认句柄。 重定向输出 (>) 要将输出从命令提示符窗口重定向到文件或设备,请使用 > 操作符。可以在许多命令中使用该操作符。例如,要将 dir 输出重定向到 Dirlist.txt,请键入: dir>dirlist.txt 如果 Dirlist.txt 不存在,Cmd.exe 将创建该文件。如果 Dirlist.txt 存在,Cmd.exe 将使用 dir 命令的输出替换文件中的信息。 要运行 netsh routing dump 命令,然后将输出发送到 Route.cfg,请键入: netsh routing dump>c:\route.cfg > 操作符可以打开具有只写访问权限的指定文件。因此,不能使用该操作符读取文件。例如,如果使用重定向操作符 >&0 启动程序,则写入句柄 1 的所有尝试操作都将失败,因为句柄 0 最初是以只读访问方式打开的。 注意 1 是 > 重定向输出操作符的默认句柄。 dir>c:\file.txt 2>&1 复制句柄时,可以复制该句柄原状态的所有特性。例如,如果一个句柄具有只读访问的属性,则该句柄的所有副本都具有只读访问属性。不能将一个具有只读访问属性的句柄复制到另一个具有只写访问属性的句柄。 使用 & 操作符重定向输入和副本 例如,要以句柄 0 输入读取(即 STDIN)的方式打开 File.txt,请键入: <file.txt 要打开 File.txt,并在内容排序后将输出发送到命令提示符窗口(即 STDOUT),请键入:
要查找 File.txt,然后将句柄 1(即 STDOUT)和句柄 2(即 STDERR)重定向到 Search.txt,请键入:
要以句柄 0 输入读取(即 STDIN)的方式复制用户定义的句柄 3,请键入: <&3 使用 & 操作符重定向输出和复制 如果将输出重定向到文件且指定了现有的文件名,Cmd.exe 将以只写方式打开文件并覆盖该文件内容。如果指定了句柄,Cmd.exe 将文件复制到现有句柄中。 要将用户定义的句柄 3 复制到句柄 1,请键入: >&3 ipconfig.exe>>output.log 2>&1 使用 >> 重定向操作符附加输出 要从命令中将输出添加到文件末尾而不丢失文件中已存在的任何信息,请使用两个连续的大于号(即 >>)。例如,使用下列命令可以将 dir 命令生成的目录列表附加到 Dirlist.txt 文件: dir>>dirlist.txt 要将 netstat 命令的输出附加到 Tcpinfo.txt 的末尾,请键入: netstat>>tcpinfo.txt 使用管道操作符 (|) dir | sort 在本例中,将同时启动两个命令,但随后 sort 命令会暂停,直到它接收到 dir 命令的输出为止。sort 命令使用 dir 命令的输出作为输入,然后将输出发送到句柄 1(即 STDOUT)。
dir 命令的输出是通过 find 筛选器命令进行发送的。包含字符串“LOG”的文件名作为文件名列表(例如,NetshConfig.log、Logdat.svd 和 Mylog.bat)存储在文件 Loglist.txt 中。 要在相同命令中使用多个筛选器,请使用管道 (|) 分隔筛选器。例如,下面的命令将搜索 C 盘上的每个目录以查找包含“LOG”字符串的文件名,并且在命令提示符窗口中每次显示一屏: dir c:\ /s /b | find "log" | more 利用管道 (|) 可以对 Cmd.exe 进行定向,使其通过 find 筛选器命令发送 dir 命令输出。find 命令只选择包含字符串“LOG”的文件名。more 命令可以显示 find 命令选择的文件名(在命令提示符窗口中每次显示一屏)。 |
请发表评论