之前拿appveyor编译hadoop试手的时候,突然发现了一个严肃的问题:Windows下没有自带默认的命令行下载工具。之前用Windows的时候一直是图形界面操作,需要敲命令的时候才打开cmd,然而我需要指明从网络上下载某个文件

之后看到Stackoverflow上有人推荐用Powershell,Powershell有内置的下载功能,然后去试了一下。觉得也是时候与时俱进一下了。

示例如下:

$cloent = new-object System.Net.WebClient
$client.DownloadFile("https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protoc-2.5.0-win32.zip", "C:\protoc-2.5.0-win32.zip")

顺带码一下操作zip文件的Compress-Archive / Expand-Archive命令。

结果发现set不能用了,对应的Get-Value命令里由缺失了不少环境变量,最后决定换回cmd,因为不想将一个工作拆分为cmd和Powershell两个脚本= =

然后决定使用cmd调用Powershell,问题出在这里:Powershell函数的参数需要双引号。cmd有转义符吗?

又是一个让人沉思的问题。咕果一下之后发现,有是有,不过是^(Ctrl+6),而且似乎对双引号没有作用。
此时顺便查了一下,Powershell的转义符是`esc下面那个),不过由于Powershell相对于cmd是个新产品,功能还是能正常使用的。

最后解决cmd向Powershell传递双引号的方法是 连着三个双引号"""。特别神奇,不知道为什么。
管他的,只要能用就行了

标签: none

添加新评论