在下面的解决方案重命名从我的问题Rename-Item error的答案中取得的文件,以下代码的代码是做什么的?
^\d{4}
e={$Matches[1]}
Rename-item -Newname {"{0:D4} - sp - C - {1}" -f ++$Count.Value,$_.Name}
对于1.我认为这是一个四位数字,但我想了解所使用的符号。
对于2. $Matches
没有被设置在任何地方,这是Select-Object
特有的变量吗?
对于3.什么是{0:D4}
做什么和{1}
在同一个字符串的末尾。此外,这行是用逗号分隔符连接两个字符串吗?
$Count = [Ref][math]::Max(1000,
[int](Get-ChildItem -Path $Folder -Filter *.sql -File|
Where-Object Name -match '^(\d{4}) - sp - C -' |
Select-Object @{n='Count';e={$Matches[1]}} -Last 1).Count)
Get-ChildItem -Path $Folder -Filter *.sql -File |
Where-Object Name -NotMatch '^\d{4} - sp - C - ' |
Rename-item -Newname {"{0:D4} - sp - C - {1}" -f ++$Count.Value,$_.Name}
^\d{4}
是一个Regular Expression
^
锚点在线开始
\d
代表一个数字
{4}
是一个量词,正好指定前面的4个数字
()
括号标记一个捕获组Get-Help about_Comparison_Operators
-Match
和-NotMatch
运算符填充$Matches
自动变量。
其中$Matches[1]
代表RegEx的第一个捕获组。
Select-Object
根据匹配(4位数字)构建计算属性,仅使用最后/最高值-format
operator(简称为-f
)用于通过插入变量内容代替{x}
来构建新文件名,其中x是基于零的数。