Powershell 使用power shell在word文档名称的每个大写字符前插入空格
我正在努力在每个大写字符前插入空格,以重命名power shell中的word文档 我尝试使用power shell中的以下脚本在此文件夹中的每个文件的第一个字符前插入空格: 你能告诉我如何写一个脚本来插入和迭代吗 #目标:文件名将显示如下:220519ColdWaterMeters[在此处输入图像描述][1],通过在文件名中添加空格更改所有文件名,使其显示为“220519冷水表” 先前代码Powershell 使用power shell在word文档名称的每个大写字符前插入空格,powershell,ms-word,iteration,rename,doc,Powershell,Ms Word,Iteration,Rename,Doc,我正在努力在每个大写字符前插入空格,以重命名power shell中的word文档 我尝试使用power shell中的以下脚本在此文件夹中的每个文件的第一个字符前插入空格: 你能告诉我如何写一个脚本来插入和迭代吗 #目标:文件名将显示如下:220519ColdWaterMeters[在此处输入图像描述][1],通过在文件名中添加空格更改所有文件名,使其显示为“220519冷水表” 先前代码 实际上,在文件名、文件夹名、文件名、属性名中使用空格,是以后编码时不必要的麻烦的解决办法。这样做可能/将
实际上,在文件名、文件夹名、文件名、属性名中使用空格,是以后编码时不必要的麻烦的解决办法。这样做可能/将导致报价的复杂性 然而,如果你真的想这样做,试试这种方法
'220519ColdWaterMeters' -csplit '(?=[A-Z])' -ne '' -join ' '
# Results
<#
220519 Cold Water Meters
#>
'220519ColdWaterMeters'-csplit'(?=[A-Z])-ne'-join'-
#结果
事实上,在文件名、文件夹名、文件名、属性名中使用空格是解决以后编码中不必要的麻烦的良方。这样做可能/将导致报价的复杂性
然而,如果你真的想这样做,试试这种方法
'220519ColdWaterMeters' -csplit '(?=[A-Z])' -ne '' -join ' '
# Results
<#
220519 Cold Water Meters
#>
'220519ColdWaterMeters'-csplit'(?=[A-Z])-ne'-join'-
#结果
您可以在这样一个管道中使用带有延迟绑定脚本块的-creplace
$source_path = "C:\Temp"
$filter = "*.doc"
$new_prefix = " "
Get-ChildItem -Path $source_path -Filter $filter |
Rename-Item -NewName {($_.basename -creplace '(?=[A-Z])',"$new_prefix") + $_.Extension}
万一扩展名有大写字母,我只针对basename,然后将扩展名添加回来。您可以在这样一个管道中使用带有延迟绑定scriptblock的
-creplace
$source_path = "C:\Temp"
$filter = "*.doc"
$new_prefix = " "
Get-ChildItem -Path $source_path -Filter $filter |
Rename-Item -NewName {($_.basename -creplace '(?=[A-Z])',"$new_prefix") + $_.Extension}
以防万一扩展名有大写字母,我只针对基本名称,然后将扩展名添加回来。只是好奇。。。为什么要在consolehost中执行此脚本,而不是在PowerShell脚本编辑器(即PowerShell ISE或VSCode)中执行此脚本?conoslehost的定义目标是关于交互式命令和运行预定义的代码/脚本、cmdlet等。您可以随时在编辑器中编写您的内容,并根据需要将其发送到consolehost。感谢您让我知道只是好奇。。。为什么要在consolehost中执行此脚本,而不是在PowerShell脚本编辑器(即PowerShell ISE或VSCode)中执行此脚本?conoslehost的定义目标是关于交互式命令和运行预定义的代码/脚本、cmdlet等。您可以随时在编辑器中编写您的内容,并根据需要将其发送给consolehost。谢谢您让我知道