首页 > 解决方案 > 删除文件全名的第一部分

问题描述

这是 2018 年 5 月 18 日的更新:感谢所有发帖的人。每个人都分享了一些重要的信息。一旦它最终为我点击,我就能够使用 DirectoryName 找出一个非常简单的解决方案:

$file = Get-ChildItem -path "c:\temp\testc" -Recurse 
$destshare = "C:\temp\testD\"
$Dest = ($file.DirectoryName.replace($file.directoryname, $destshare))

原帖如下:

我正在.fullname使用 文件从文件中提取 ,Get-Childitem并希望从源中删除。server\sharename

使用$f.fullname.split('\)[X]保留我选择的数组部分,但是有没有办法删除\\server\share$\\ECNFILE01\santana-carlos$\

从:

\\ECNFILE11\Joe-smith-J$\work\O365 SOP - 新用户帐户创建 BEANE EDITS 和 MARKUPS.docx

我只想:

\work\O365 SOP - 新用户帐户创建 BEANE EDITS 和 MARKUPS.docx

每个用户的 server\sharename 都不同:\\ECNFILE11\Joe-smith-J$, \\ECNFILE9\user2$, \\ECNFILE1\user3, 等等...

谢谢

标签: powershell

解决方案


您可以将字符串转换为URI,并使用 makeHostSegments属性来构建\\server\share\您想要的样式的字符串:

$URI = [URI]"\\ECNFILE11\Joe-smith-J$\work\O365 SOP - New User Account Creation BEANE EDITS and MARKUPS.docx"
Write-Output "\\$($URI.Host)\$($URI.Segments[1])"

> \\ecnfile11\Joe-smith-J$/

Windows 将在 UNC 路径中自动更正\vs /,但如果您愿意,您可以随时使用替换来更改它...

Write-Output "\\$($URI.host)\$($URI.Segments[1] -replace('/','\'))"

> \\ecnfile11\Joe-smith-J$\

不返回路径\\server\share

$UNC = "\\ECNFILE11\Joe-smith-J$\work\O365 SOP - New User Account Creation BEANE EDITS and MARKUPS.docx"
$URI = [URI]$UNC
$UNC -replace "^$([regex]::Escape("\\$($URI.host)\$($URI.Segments[1] -replace('/','\'))"))"

> work\O365 SOP - New User Account Creation BEANE EDITS and MARKUPS.docx

推荐阅读