本文主要是介绍Powershell快速入门(三) 实战应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
好像关于Powershell说的已经差不多了,所以最后一篇文章就来使用Powershell写一些脚本,帮助我们完成一些日常工作。
文件管理
常用命令
先来看看常用的文件管理命令。
Set-Location
命令用于切换工作目录,它的别名是cd
。
Get-Location
命令用于获取当前工作目录,它的别名是pwd
。
Get-ChildItem
命令用于获取当前目录下的所有文件。
Get-Item
命令用于获取给定文件的信息。
还有文件移动、删除、复制、粘贴、重命名等命令,输入Get-Command -Noun item
就可以看到这些命令,这里就不做介绍了。
获取文件信息
获取文件信息可以利用命令Get-Item
。下面获取了我电脑上的cmder.exe
可执行文件的信息。
λ Get-Item .\Cmder.exe目录: D:\devtools\cmder_miniMode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2016/12/2 7:15 130560 Cmder.exe
默认只列出这么三个属性,当然其实文件属性远不止这些。我们可以通过管道,将文件信息对象传递给命令Select-Object
,让它帮我们显示所有属性。这里只粘贴了一点点内容,其实文件信息很长,大家可以自行尝试。
λ Get-Item .\Cmder.exe|Select-Object *PSPath : Microsoft.PowerShell.Core\FileSystem::D:\devtools\cmder_mini\Cmder.exe
PSParentPath : Microsoft.PowerShell.Core\FileSystem::D:\devtools\cmder_mini
过滤文件
用Get-ChildItem
显示当前当前文件的时候,会显示所有文件。有时候我们可能仅仅需要搜索或者过滤部分文件。
首先,如果是比较简单的需求,可以使用?*
通配符来搞定,问号用于匹配任意单个字符,星号用于匹配任意多个字符。比方说,我想要列出所有.md
格式的文件,就可以使用下面的命令。
PS D:\devtools\cmder_mini> Get-ChildItem *.md目录: D:\devtools\cmder_miniMode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2016/12/2 7:14 73491 CHANGELOG.md
-a---- 2016/12/2 7:14 1784 CONTRIBUTING.md
-a---- 2016/12/2 7:14 10039 README.md
有时候可能需要使用正则表达式来查找文件,不过好像Get-ChildItem
没有正则表达式查询的命令行,不过我们可以使用Where-Object
命令来自定义查询。如果了解C#语言的LINQ的话,应该可以猜到,这个命令对应于LINQ的where
语句。
下面同样是查找所有.md
格式的文件,不过这次使用了Where-Object
和正则表达式,其中Where-Object
里面的$_
是形式变量,代表每次迭代的文件。如果了解过C#的LINQ,或者Java 8的流类库,应该对这种形式会比较熟悉。
Get-ChildItem|Where-Object {$_
这篇关于Powershell快速入门(三) 实战应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!