Powershell通过复制最后三个字符重命名文件
在Powershell中复制文件名中的最后三个字符是否有更简单的方法? 我一直在使用以下代码 要复制整个名称,请执行以下操作:Powershell通过复制最后三个字符重命名文件,powershell,Powershell,在Powershell中复制文件名中的最后三个字符是否有更简单的方法? 我一直在使用以下代码 要复制整个名称,请执行以下操作: dir |重命名项-NewName{$\.basename+$\.basename+$\.extension} 要删除不需要的字符,请执行以下操作: getchilditem-递归| foreach{$| rename item-newname($|.Name-replace'(.{15})…(.+)','$1$2')} 但我们是否希望有一种更省时的方法 编辑: 我
dir |重命名项-NewName{$\.basename+$\.basename+$\.extension}
要删除不需要的字符,请执行以下操作:
getchilditem-递归|
foreach{$| rename item-newname($|.Name-replace'(.{15})…(.+)','$1$2')}
但我们是否希望有一种更省时的方法
编辑:
我想重复最后三个字;e、 g:
之前:
00469-101236-01-V-3-20-001
之后:
00469-101236-01-V-3-20-001 001
提供了几个用于引用正则表达式在替换操作数中匹配的内容<代码>$&指的是整个匹配[1],可在此处使用:
PS> '00469-101236-01-V-3-20-001' -replace '...$', '$& $&'
00469-101236-01-V-3-20-001 001
您还可以执行'.{3}$'
而不是
'.…$'
请注意,$&
扩展为'001'
,即最后3个字符。文件名的开头(最后3个字符之前的所有内容),'00469-101236-01-V-3-20-“
”也存在的原因是-replace
仅替换输入字符串的匹配部分
在命令的上下文中:
Get-ChildItem -Recurse | Rename-Item -NewName {
($_.BaseName -replace '...$', '$& $&') + $_.Extension
} -Whatif
注意:上面命令中的预览操作。一旦确定操作将执行所需操作,请删除-WhatIf
[1] 您也可以使用
$0
而不是$&
,即使只有$&
是<代码>$0是建模的,其中
指正则表达式中捕获组的索引((…)
),从1
($1
)开始。$0
的工作原理与$&
类似,可以从以下内容推断:“组
属性返回的GroupCollection对象的第一个元素(索引0
处的元素)包含与整个正则表达式模式匹配的字符串”-谢谢。对比各种正则表达式引擎的行为。提供了几个用于参考正则表达式在替换操作数中匹配的内容<代码>$&指的是整个匹配[1],可在此处使用:
PS> '00469-101236-01-V-3-20-001' -replace '...$', '$& $&'
00469-101236-01-V-3-20-001 001
您还可以执行'.{3}$'
而不是
'.…$'
请注意,$&
扩展为'001'
,即最后3个字符。文件名的开头(最后3个字符之前的所有内容),'00469-101236-01-V-3-20-“
”也存在的原因是-replace
仅替换输入字符串的匹配部分
在命令的上下文中:
Get-ChildItem -Recurse | Rename-Item -NewName {
($_.BaseName -replace '...$', '$& $&') + $_.Extension
} -Whatif
注意:上面命令中的预览操作。一旦确定操作将执行所需操作,请删除-WhatIf
[1] 您也可以使用
$0
而不是$&
,即使只有$&
是<代码>$0是建模的,其中
指正则表达式中捕获组的索引((…)
),从1
($1
)开始。$0
的工作原理与$&
类似,可以从以下内容推断:“组
属性返回的GroupCollection对象的第一个元素(索引0
处的元素)包含与整个正则表达式模式匹配的字符串”-谢谢。对比各种正则表达式引擎的行为