我想将批处理中的文件路径转换为 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