Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell通过复制最后三个字符重命名文件_Powershell - Fatal编程技术网

Powershell通过复制最后三个字符重命名文件

Powershell通过复制最后三个字符重命名文件,powershell,Powershell,在Powershell中复制文件名中的最后三个字符是否有更简单的方法? 我一直在使用以下代码 要复制整个名称,请执行以下操作: dir |重命名项-NewName{$\.basename+$\.basename+$\.extension} 要删除不需要的字符,请执行以下操作: getchilditem-递归| foreach{$| rename item-newname($|.Name-replace'(.{15})…(.+)','$1$2')} 但我们是否希望有一种更省时的方法 编辑: 我

在Powershell中复制文件名中的最后三个字符是否有更简单的方法? 我一直在使用以下代码

要复制整个名称,请执行以下操作:

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
处的元素)包含与整个正则表达式模式匹配的字符串”-谢谢。
对比各种正则表达式引擎的行为