删除文件名开头的所有零

4
我有一些以不同数量的零开头的文件,希望删除这些文件名开头的所有零。例如:
从:
010 document.docx
0002  document.docx
030  document.docx
到:
10 document.docx
2  document.docx
30  document.docx
我知道可以使用以下命令逐个删除这些零:
Get-ChildItem *.docx | Rename-Item -NewName { [string]($_.Name).Substring(1) }

但是我可以通过一个命令来完成这个任务吗?

4
看一下这个'0004'.TrimStart('0')...输出是4.Trim()字符串方法及其变体非常方便![露齿笑] - Lee_Dailey
2个回答

6
使用正则表达式从文件名中删除前导零。
Get-ChildItem *.docx | Rename-Item -NewName { $_.Name -replace '^0+' }

^ 匹配字符串(在这种情况下是文件名)的开头。 0+ 匹配一个或多个连续的零。


1
另一种选择是将多个空格替换为一个,并在左侧填充零以达到唯一长度。
Get-ChildItem [0-9]*.docx|
  Rename-Item -NewName {[regex]::Replace(($_.Name -replace ' +',' '),
                        '^\d+',{$args[0].Value.PadLeft(4,'0')})}

>gci *.docx

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2019-01-04     21:40              2 0002 document.docx
-a----       2019-01-04     21:40              2 0010 document.docx
-a----       2019-01-04     21:40              2 0030 document.docx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接