Powershell命令笔记

2024年12月31日

搜索哪些文件含有指定字符串

Get-ChildItem ..\scripts\*azz* |Select-String 571

867161.xml:301:<t id="571">[author]3Y黑客联盟 3B-%s3X[/author][text colwidth='500']Not our best choice, but let's see anyway...\n\n[right]3ZHacker Corp.3X[/right][/text]  

.\scripts\*azz*是路径,支持通配符。

571是欲查找的字符串,是正则表达式。如果有空格,要用引号包起来。如果加选项-simplematch,则不作为正则表达式。

输出结果是文件名+行号+该行内容。

Get-ChildItem ..\scripts\*azz* |Select-String 571|select Filename

Filename  
--------  
azz.ext.nom.std.xml  
azz.gr.interv.ComIA.xml  
azz.prime.calcule.xml  
azz.prime.comm.menu.IA.general.xml  
azz.prime.comm.menu.xml  
azz.prime.commerce.ComIA.xml  
azz.prime.commerce.ComIA.xml  
azz.prime.commerce.IA.xml  
azz.prime.commerce.IA.xml  
azz.prime.commerce.IA.xml  
Azz.status.xml

如果有些文件的一行很长,上一命令的输出很长,这时可以用此命令,仅显示文件名(Filename)。也可以改成显示路径(Path)。

具体有哪些可以选择性显示,用get-property命令查看,MSDN对此的说明很难找。

Get-ChildItem ..\scripts\*azz* |Select-String 571|select Filename|Get-Unique -AsString

Filename  
--------  
azz.ext.nom.std.xml  
azz.gr.interv.ComIA.xml  
azz.prime.calcule.xml  
azz.prime.comm.menu.IA.general.xml  
azz.prime.comm.menu.xml  
azz.prime.commerce.ComIA.xml  
azz.prime.commerce.IA.xml  
Azz.status.xml  

如果有些文件里不止一次出现指定的字符串,则在上例中文件名会显示多次。

此命令则只显示不重复的文件名。

原先的返回值是对象,AsString选项要求把返回值先ToString,然后排序。(在本例中,如果不加AsString,则只会显示第一个对象。)

文件批量重命名

ls *.jpg | %{ mi -LiteralPath $_ ($_.name -replace "Help","帮助") }

%ForEach-Object的别名,大括号里面是循环体,$_是循环变量。

miMove-Item的别名。

Check size of mount points (equivalent to Linux df)

get-wmiobject Win32_volume |select Name, 
		@{Name="Type"; Expression={@("Unknown", "No Root Directory", "Removable Disk", "Local Disk", "Network Drive", "Compact Disk", "RAM Disk" )[$_.DriveType]}},
		@{Name="Capacity GB"; Expression={[Math]::Round($_.Capacity/1024/1024/1024,1)}},
		@{Name="Free GB"; Expression={[Math]::Round($_.Freespace/1024/1024/1024,1)}} |
Sort-Object -Property Name;

输出是这样

Name                                              Type         Capacity GB Free GB
----                                              ----         ----------- -------
\\?\Volume{848a1e99-9331-11ef-a33c-e454e86b3a3f}\ Local Disk           0.1       0
\\?\Volume{848a1e9c-9331-11ef-a33c-e454e86b3a3f}\ Local Disk           0.6     0.1
B:\                                               Local Disk             1       1
C:\                                               Local Disk         101.1      22
D:\                                               Local Disk         783.2     221
D:\Downloads\                                     Local Disk         238.5    59.6
F:\                                               Compact Disk           0       0

See https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/aa394515(v=vs.85)

本文原发表于2013年3月24日。