目录
- 一、cmd和powershell
- 二、什么是输入输出重定向
- 三、语法及示例
一、cmd和powershell
大家如果只用过Windows,可能cmd接触的相对多一点。按win +r 输入cmd即可打开。我一般用的是powershell。
cmd:
     cmd是command的缩写,即命令提示符。是提示命令输入的一种工作提示符。在不同的操作系统环境下,命令提示符各不相同。 在windows环境下,命令行程序为cmd.exe,是一个32位的命令行程序,微软Windows系统基于Windows上的命令解释程序,类似于微软的DOS操作系统。输入一些命令,cmd.exe可以执行,比如ping url/ip。它也可以执行BAT文件。
powershell:
     PowerShell 是一种跨平台的任务自动化和配置管理框架(在Windows、Linux、macOS、ARM、Docker上都能用),由命令行管理程序和脚本语言组成。 与大多数接受并返回文本的 shell 不同,PowerShell 构建在 .NET 公共语言运行时 (CLR) 的基础之上,接受并返回 .NET 对象。 这一根本上的改变引入了全新的自动化工具和方法。
     
     学习powershell可以到微软官网,学习地址。现在windows最新的版本是7.3.0。
| 对比项 | cmd | powershell | 
| 框框颜色 | 黑色 | 蓝色 | 
| 起用时间 | 1981年 | 2006年 | 
| 适用性 | 仅支持cmd脚本(bat,cmd) | 支持cmd脚本(bat,cmd)和powershell脚本(ps1) | 
| 扩展性 | 仅支持cmd内置函数 | 支持cmd内置函数+powershell cmdlet | 
| 命令别名 | 不支持 | 支持 | 
| 输出内容类型 | 对象 | 文本 | 
| 程序并发 | 支持 | 不支持 | 
| 是否有ISE(编译器) | 有,而且能直接调试 | 无,只有命令行 | 
| 是否支持.net库 | 是 | 否 | 
| 是否支持WMI(监控工具) | 是 | 否 | 
| 是否可以管理微软云资源 | 是 | 否 | 
| 是否支持shell | 是 | 否 | 
| 是否可以运行所有类型程序 | 是 | 否 | 
二、什么是输入输出重定向
输入重定向:指的是重新指定设备来代替键盘作为新的输入设备;
 输出重定向:指的是重新指定设备来代替显示器作为新的输出设备。
通常是用文件或命令的执行结果来代替键盘作为新的输入设备,而新的输出设备通常指的就是文件。
我暂时只用到了输出重定向,本文对输入重定向只做简单语法说明。
什么时候会用到输出重定向?
- 需要将命令执行结果保存;
- 需要保存命令执行日志;
- 输出太长,cmd或者powershell显示不方便,或者内容超出最大缓冲区大小;
- 其他(上面是我暂时遇到的)…
三、语法及示例
PowerShell 支持重定向以下输出流。
| 流 | 说明 | 已引入的版本 | 
| 1 | 成功 流 | PowerShell 2.0 | 
| 2 | 错误 流 | PowerShell 2.0 | 
| 3 | 警告 流 | PowerShell 3.0 | 
| 4 | 详细 流 | PowerShell 3.0 | 
| 5 | 调试 流 | PowerShell 3.0 | 
| 6 | 信息 流 | PowerShell 5.0 | 
| * | 所有流 | PowerShell 3.0 | 
PowerShell 中还有一个 进度 流,但它不支持重定向。
成功和错误流类似于其他 shell 的 stdout 和 stderr 流。 但是,stdin 未连接到用于输入的 PowerShell 管道。
PowerShell 重定向运算符如下所示,其中 n 表示流号, 成功流 ( 1 ) 为默认值(如果未指定任何流)。
| 运算符 | 说明 | 语法 | 
|  | 将指定的流发送到文件。 |  | 
|  | 将 指定的流追加到文件中。 |  | 
|  | 将指定的流重定向到 成功 流。 |  | 
示例:
(1)将yt-dlp的帮助文档保存到 help.txt中
yt-dlp -h >help.txt
(2)将yt-dlp -F url 的结果追加到上述help.txt文件中
yt-dlp -F https://www.youtube.com/watch?v=JHNaqr-q3to"&"ab_channel=%EA%BD%83%EB%B9%B5TVGGotBBangTV >>help.txt

其中:
 命令1会将命令执行结果保存到help.txt中,没有该文件会自动创建,有该文件则会清除原有内容后再写入;
 命令2会将命令执行结果追加到help.txt的末尾;
 上述操作都是默认将成功流进行重定向,和 yt-dlp -h 1>help.txt的结果;
 yt-dlp是我安装的一个命令行工具,这里只是测试用。
生成的txt文件如下:

                










