繁体   English   中英

如何在powershell中替换字符串?

[英]How to replace a string in powershell?

我需要从文件路径中解放文件扩展名。 对于Eg:我有一个文件路径,如:

\\Test\data\data.dll

如何从文件路径中删除data.dll,以便我只获取

\\Test\data\

作为输出。

我尝试使用狂野的角色 - *。 但那没用。

谢谢!

在您的情况下,有一个特殊的cmdlet,默认情况下会删除最后的文件或文件夹。 尝试:

$path =  \\test\data\data.dll
#Get folderpath    
Split-Path $path
#Get filename only (thanks to Christian for tip)
Split-Path $path -Leaf

这是两种不同的方式。 一种是使用Split-Path。 另一种是使用正则表达式的-replace。 它们在PowerShell V3中运行良好,但如果路径中包含驱动器号,则Split-Path在V2中不起作用,但您的系统没有该驱动器盘符。

#Get Folder
Split-Path '\\test\data\data.dll'
'\\test\data\data.dll' -replace '\\[^\\]+$'

#Get File 
Split-Path '\\test\data\data.dll' -Leaf
'\\test\data\data.dll' -replace '^\\.*\\'

只是为了解决@StephenMills在他的回答中提出的问题的解决办法,我加了2美分:

PS C:\ps> ( [system.io.fileinfo]"J:\data\data.dll" ).FullName
J:\data\data.dll
PS C:\ps> ( [system.io.fileinfo]"J:\data\data.dll" ).BaseName
data
PS C:\ps> ( [system.io.fileinfo]"J:\data\data.dll" ).name
data.dll
PS C:\ps> ( [system.io.fileinfo]"J:\data\data.dll" ).DirectoryName
J:\data

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM