批处理中相当于“%~dpn0”的powershell是什么?

Cla*_*lam 4 powershell hard-drive batch

我是 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
Run Code Online (Sandbox Code Playgroud)

Ƭᴇc*_*007 6

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

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

例如:

$scriptPathAndName = $MyInvocation.MyCommand.Definition
write-host $scriptPathAndName
Run Code Online (Sandbox Code Playgroud)

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

$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
write-host $scriptPath
Run Code Online (Sandbox Code Playgroud)

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

只获取脚本的名称:

$scriptName = split-path -leaf $MyInvocation.MyCommand.Definition
write-host $scriptName
Run Code Online (Sandbox Code Playgroud)

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