我正在编写一个脚本,该脚本将创建一个XML文档,以便用于进一步的自动化。除其他事项外,dropDir
和fileName
应该是参数。但由于这些都是必需的,因此文件将始终位于dropDir
。
我想知道是否可以将这两个参数合并为一个参数,然后从单个字符串中解析出文件?
因此,例如,用户将调用脚本:
.\iAmAScript.ps1 -path C:\prodfiles\settings.xml
在iAmAScript内部,逻辑上会采取以下行动:
If (![System.IO.File]::Exists($path)){
New-Item $path -type file
$dropLoc = $path.<some method returning C:\prodfiles\>
$fileName = $path.<some method returning settings.xml>
}
我只是不太确定如何在Powershell的上下文中执行此操作,这是尝试找出在Powershell中使用LastIndexOf
方法截断左边所有内容的方法的最佳方法最后一个\?
答案 0 :(得分:2)
您可以使用Split-Path
来获取这些组件:
$file = $path | Split-Path -Leaf
$dir = $path | Split-Path -Parent
.NET方法如下:
$file = [System.IO.Path]::GetFileName($path)
$dir = [System.IO.Path]::GetDirectoryName($path)
您还可以获取该项目并使用其属性:
$item = Get-Item -Path $path
$item.Name # the file
$item.DirectoryName #the directory
此对象可以传递给接受文件参数的大多数cmdlet,并且它会公开其他方法。要做到这一点,文件必须首先存在,所以你必须创建它然后获取项目,但这可能会在你的脚本中稍后有用。