powershell - 删除文件全名的第一部分
问题描述
这是 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
, 等等...
谢谢
解决方案
您可以将字符串转换为URI,并使用 makeHost
和Segments
属性来构建\\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
推荐阅读
- javascript - 如何在 d3.js 中显示来自 .json 数据的多边形?
- firebase - Firebase 文档写入限制
- syntax-error - ISE14.7 中 VHDL 测试平台“in”附近的语法错误
- python - Py:imageio.imread vs scipy.misc.imread
- google-apps-script - -自定义函数返回不更新
- node.js - 部署时 Heroku 状态错误 503 - 我如何解释错误代码?
- c++ - 当匹配计数大于某个阈值时,我可以使用 C++20 范围来中断吗?
- git - 为什么 git 在“git pull”之后报告“最新”?
- postgresql - debezium postgres连接器中的毫秒时间戳
- ios - 使用 MGLPointCollectionFeature 在 iOS mapbox 上对 MGLAnnotations 图像进行聚类