批处理中与“%~dpn0”等效的 powershell 是什么?

批处理中与“%~dpn0”等效的 powershell 是什么?

我是 powershell 新手,我问自己如何在 powershell 脚本中放入以下变量?我知道如何在 powershell 中设置变量,但我不知道如何获取"%~dpn0"

set pgm=%~n0
set log=%~dpn0.log
set csv=%~dpn0.csv
set dir=%~dp0users
set txt=%~n0.txt
set fix=%~dpn0.fix

答案1

批量%~dpn0返回当前正在执行的脚本的驱动器、路径和名称。

要在 PowerShell 脚本中执行相同操作,您可以使用$MyInvocation.MyCommand.Definition

例如:

$scriptPathAndName = $MyInvocation.MyCommand.Definition
write-host $scriptPathAndName

要获取脚本的路径,您可以使用:

$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
write-host $scriptPath

(注意:在 Powershell v3+ 中,您可以通过引用预定义变量来获取脚本的路径(不带名称)$PSScriptRoot

要获取脚本的名称:

$scriptName = split-path -leaf $MyInvocation.MyCommand.Definition
write-host $scriptName

有关 Split-Path 选项的更多信息:https://technet.microsoft.com/en-us/library/hh849809.aspx

答案2

我认为你正在寻找这样的东西

$ScriptPath = Split-Path $MyInvocation.MyCommand.Path

然后我认为-Parent会给你 PWD,但你可能不需要它。

相关内容