在 powershell 中解释文件夹路径

在 powershell 中解释文件夹路径

我想将批处理中的文件路径转换为 ​​powershell 脚本。我的批处理文件路径是

Xcopy %~d0\Software\Browsers\ChromeStandaloneSetup64.exe" %userprofile%\downloads

我尝试了下面的 powershell 脚本但没有找到。

Copy-Item -Path "${PSScriptRoot}\Softwares\Browsers\ChromeStandaloneSetup64.exe" -Destination "$($env:USERPROFILE)\downloads"

我认为我在 Powershell 中批处理中对 %~d0 使用了错误的路径缩写。请帮我改正。谢谢。
(我的 powershell ps1 文件存储在名为 Xray 的文件夹中,但 .exe 文件存储在另一个名为 Softwares\Browsers 的文件夹中。Xray 和 Softwares 文件夹都在 USB 驱动器中)

答案1

%~dp0用于获取脚本位置的完整路径。

%~d0用于获取脚本位置的根驱动器号。

powershell 中的等效项是:

  • ${PSScriptRoot}完整路径 ( %~dp0)
  • $(${PSScriptRoot}.Split("\")[0])驱动器号 ( %~d0)

例子

批:

echo "%~dp0Software\Browsers\ChromeStandaloneSetup64.exe"
echo "%~d0\Software\Browsers\ChromeStandaloneSetup64.exe"

输出

"c:\full\path\of\the\Script\Software\Browsers\ChromeStandaloneSetup64.exe"
"c:\Software\Browsers\ChromeStandaloneSetup64.exe"

电源外壳

Write-Host "$(${PSScriptRoot})\Softwares\Browsers\ChromeStandaloneSetup64.exe"
Write-Host "$(${PSScriptRoot}.Split("\")[0])\Softwares\Browsers\ChromeStandaloneSetup64.exe"

输出

C:\full\path\of\the\script\Softwares\Browsers\ChromeStandaloneSetup64.exe
C:\Softwares\Browsers\ChromeStandaloneSetup64.exe

相关内容