这并不完全是寻求帮助,更像是一种好奇心。我的脚本中有一个像这样定义的文件路径:
$RootDir = $PSScriptRoot
$ExcelFile = $RootDir + "\" + $File + ".xlsx"
$File
变量已在脚本的前面定义。这个版本工作得很好,但是当我尝试将其简化为单行时,它不起作用:
$ExcelFile = $PSScriptRoot + "\" + $File + ".xlsx"
知道为什么第二个版本不起作用吗?它说找不到该文件。我看不出任何合乎逻辑的理由。
Join-Path
cmdlet:
$ExcelFile = Join-Path $PSScriptRoot ($File + '.xlsx')
在您的特定情况下,您也可以使用带有变量的简单字符串:
$ExcelFile = "${PSScriptRoot}\${File}.xlsx"
但是
Join-Path
是更有弹性的方法,因为它自动处理元素之间的路径分隔符。
认为这可能对某人有帮助
# 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)}}