有一个powersshell从DFS返回文件夹列表,我想将长文件夹名称缩减为它们的结果首字母缩略词。这就是我到目前为止,用下划线代替空间......
$folders = Get-DfsnFolder -Path "\\dfs\path\*"| %{$folder = $_.path.split("\"); $folder[4].replace(" ","_")}
foreach ($folder in $folders) { if ($folder.length -gt 24) {
if ($_.length -gt 20) { $_.split("?<=\_)[\_]+").substring(0,1);
<Do something here to put the letters back into $folders>
}
}
基本上我想要一个首字母缩略词创作者
答案 0 :(得分:1)
我不完全理解您为什么要使用下划线,对于短于20个字符的字符串是单独的要求吗?
无论如何,为了将一个字符串拆分为单词并仅返回每个单词的第一个字母,你可以像这样组合拆分和连接:
("this is a test" -split " " |% { $_[0] }) -join ""
结合您的代码,您可以使用以下内容:
$folders |% {
if($_.length -gt 20) {
( $_ -split " " |% { $_[0] } ) -join ""
} else {
$_.replace(" ","_")
}
}
答案 1 :(得分:0)
您可以使用Rename-Item
cmdlet:
Rename-Item采用[目标路径]和[源路径]
Rename-Item $_.FullName $_.Name.Replace(' ','_') -Force #this is for the space to underscore `Replace`
Rename-Item $_.FullName $_.Name.Substring(0,1) -Force #this is for the first letter `Substring`