首页 文章

获取正则表达式在powershell脚本中工作

提问于
浏览
0

我正在尝试使用正则表达式重命名几个文件 .

ck1823000-23.dat
ck1293834-67.dat
lo1230324-99.dat
pk1232131-34.dat
...

我想删除 -XX 所以结果会是这样的:

ck1823000.dat
ck1293834.dat
lo1230324.dat
pk1232131.dat
...

我想出了这个正则表达式:

(?:.*?)([-\\s].*?).dat

但我得到这个错误:

Rename-Item:参数'NewName'的脚本块输入失败 . 正则表达式模式无效

当我运行此命令时:

Get-ChildItem . -file -Filter "*.dat" | Rename-Item -newname { $_.name -replace "\(?:.*?)([-\\s].*?).dat\", ""}

2 回答

  • 1

    使用下面的正则表达式,然后用空字符串替换匹配的字符 .

    -[^.-]*(?=\\.dat)
    

    DEMO

    Get-ChildItem . -file -Filter "*.dat" | Rename-Item -newname { $_.name -replace "-[^.-]*(?=\\.dat)", ""}
    
  • 1

    另一个选项可以使用 basename 而不是 name 属性

    Get-ChildItem . -file -Filter "*.dat" | 
       Rename-Item -newname { $_.basename -replace "-.*"}
    

相关问题