Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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_Rename - Fatal编程技术网

Powershell 如何更改大写字母以更正特定单词的大小写?

Powershell 如何更改大写字母以更正特定单词的大小写?,powershell,rename,Powershell,Rename,嗨,我需要更改特定单词的大小写 例如: RX PPLLC-史密斯医生-约翰·史密斯-哦-疼痛-利多卡因 RX PPLLC-史密斯医生-约翰·史密斯-哦-疼痛-非诺洛芬 RX PPLLC-史密斯医生-约翰·史密斯-OH-皮炎-地氟松 RX PPLLC-史密斯博士-约翰·史密斯-OH-疤痕-西尔维克斯垫 应该是这样的: RX PPLLC-史密斯医生-约翰·史密斯-哦-疼痛-利多卡因 RX PPLLC-史密斯医生-约翰·史密斯-哦-疼痛-非诺洛芬 RX PPLLC-史密斯医生-约翰·史密斯-OH

嗨,我需要更改特定单词的大小写

例如:

  • RX PPLLC-史密斯医生-约翰·史密斯-哦-疼痛-利多卡因
  • RX PPLLC-史密斯医生-约翰·史密斯-哦-疼痛-非诺洛芬
  • RX PPLLC-史密斯医生-约翰·史密斯-OH-皮炎-地氟松
  • RX PPLLC-史密斯博士-约翰·史密斯-OH-疤痕-西尔维克斯垫
应该是这样的:

  • RX PPLLC-史密斯医生-约翰·史密斯-哦-疼痛-利多卡因
  • RX PPLLC-史密斯医生-约翰·史密斯-哦-疼痛-非诺洛芬
  • RX PPLLC-史密斯医生-约翰·史密斯-OH-皮炎-地氟松
  • RX PPLLC-史密斯博士-约翰·史密斯-OH-疤痕-西尔维克斯垫
我试过这个:

get-childitem-recurse | rename-item-newname{$\u.name-replace“PAIN”,“PAIN”}

get-childitem-recurse | rename-item-newname{$\u.name-replace“SCAR”,“SCAR”}

get-childitem-recurse | rename-item-newname{$\名称-替换“皮炎”、“皮炎”}

现在的问题是,我是否可以将其整合到一个代码中?对于其他文件名,结尾的单词并不总是一个单词2或更多


提前谢谢。

看起来您需要使用
标题库
重命名文件。注意,转换为
TitleCase
并不适用于所有上限。因此,我们需要将字符串
ToLower()

另一个注意事项是,这也会将“RX PPLLC”更改为标题酶。如果需要忽略这一点,则可能需要使用
子字符串来绕过它

更新:--如果您想保留“RX PPLLC”:


有更好的方法可以做到这一点。基本上,这将把文件名分成两个字符串(左侧和右侧)。它将更改右键,然后将其放回名为
$newName
的变量中。这仅在文件名包含
-
时有效。如果你想处理这些情况,你需要一个条件或正则表达式。。。这只是一个简单的例子

如何使用子字符串?@GabrielBalenton更新了一个简单的例子。该代码将在第一个
-
之后对所有内容应用标题库,将
OH
更改为
OH
。我会这样做:
$parts=$\u.Name.Split'-'$parts[4]=(获取区域性).TextInfo.ToTitleCase($parts[4].ToLower())$NewName=$parts-join'-'
是的,这会将
OH
更改为
TitleCase
。假设这是一种状态,那么夜间也要考虑到这一点。
Get-ChildItem -Path "C:\Path" -Recurse | Rename-Item -NewName {$_.Name -replace "$($_.Name)", "$((Get-Culture).TextInfo.ToTitleCase($_.Name.ToLower()))"}
Get-ChildItem -Path "C:\Test" -Recurse | Rename-Item -NewName {
    $lefSide = $_.Name.Substring(0,$_.Name.IndexOf('-'))
    $rightSide = $_.Name.Substring($_.Name.IndexOf('-') + 1)
    $rightSide = $((Get-Culture).TextInfo.ToTitleCase($rightSide.ToLower()))
    $newName = $leftSide + $rightSide
    $_.Name -replace "$($_.Name)", "$newName"    
}