Qual é o equivalente a powershell para “% ~ dpn0” em lote?

0

Sou novo no powershell e me perguntei como poderia colocar as seguintes variáveis em um script PowerShell? Eu sei como definir uma variável no powershell, mas não sei como obter "%~dpn0" .

set pgm=%~n0
set log=%~dpn0.log
set csv=%~dpn0.csv
set dir=%~dp0users
set txt=%~n0.txt
set fix=%~dpn0.fix
    
por Clam 26.08.2015 / 20:23

2 respostas

2

Em lote, %~dpn0 retorna o Drive, o Caminho e o Nome do script atualmente em execução.

Para fazer o mesmo em um script do PowerShell, você pode usar $MyInvocation.MyCommand.Definition .

por exemplo:

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

Para obter apenas o caminho para o script, você pode usar:

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

(Nota: no Powershell v3 + você pode obter o caminho do script (sem o nome) referenciando a variável predefinida $PSScriptRoot )

Para obter apenas o nome do script:

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

Mais informações sobre as opções do Split-Path: link

    
por 26.08.2015 / 20:42
0

Acho que você está procurando por algo assim

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

Então eu acho que -Parent vai te dar a PWD, mas você pode não precisar disso.

    
por 26.08.2015 / 20:41