使用 $PSScriptRoot 定义文件路径

问题描述 投票:0回答:2

这并不完全是寻求帮助,更像是一种好奇心。我的脚本中有一个像这样定义的文件路径:

$RootDir = $PSScriptRoot
$ExcelFile = $RootDir + "\" + $File + ".xlsx"

$File
变量已在脚本的前面定义。这个版本工作得很好,但是当我尝试将其简化为单行时,它不起作用:

$ExcelFile = $PSScriptRoot + "\" + $File + ".xlsx"

知道为什么第二个版本不起作用吗?它说找不到该文件。我看不出任何合乎逻辑的理由。

powershell path filepath
2个回答
0
投票

要构建路径,请使用

Join-Path
cmdlet:

$ExcelFile = Join-Path $PSScriptRoot ($File + '.xlsx')

在您的特定情况下,您也可以使用带有变量的简单字符串:

$ExcelFile = "${PSScriptRoot}\${File}.xlsx"

但是

Join-Path
是更有弹性的方法,因为它自动处理元素之间的路径分隔符


0
投票

认为这可能对某人有帮助

# Get Current working path
if($PSScriptRoot){$PSRootPath = $PSScriptRoot}Else{Try { $PSRootPath = (Split-Path $psISE.CurrentFile.FullPath -Parent)} Catch {$PSRootPath = (Split-Path $MyInvocation.MyCommand.Path -Parent)}}
© www.soinside.com 2019 - 2024. All rights reserved.