当前,我手动浏览每个文件并使用通用重命名过程对其进行更新。
我只是开始尝试弄清楚如何使用Windows PowerShell来重命名具有通用结构的文件。问题是,我见过的所有示例都使用通用扩展替换某些内容。我想删除扩展名后的所有内容,并且出现错误。
例子:
[email protected]_BATCHES.20150108073838322
[email protected]_BATCHES.20150108073534804
我希望最终得到的是:
64244350.NSFM3V
64244882.NSFM3V
.NSFM3V是所有文件中的常见因素,但是前后存在随机性。这是我在PowerShell中创建内容的第一次尝试:
Get-ChildItem *.NSFM3V* | Rename-Item -NewName {$_name -Replace *.{$_name}.*,""}
我的Get-ChildItem .NSFM3V可以从文件夹中获取所有文件,但是我无法将其重命名。
谢谢你的时间!
您可以这样做:
gci *.NSFM3V* | rename-item -newname { $_.name -replace '(.*)@.*', '$1' }
使用正则表达式获取的左侧,@
并在替换中使用它。
gci
传递到管道,传递的对象被赋予特殊变量$_
Rename-Item
$_
从管道中获取对象,并使用内部的替换{..}
来制作新名称-replace
采用name
对象的属性并应用替换(.*)
意味着匹配任何东西。注意方括号,这些很重要,因为它们构成了一个捕获小组@.*
表示匹配@
后跟任何内容@
然后再捕获任何东西'$1'
是对捕获组的引用,因此从本质上讲,您将整个$_.name
值替换为(最后一个)为止的所有值,@
并将其传递给-NewName
参数本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句