簡體   English   中英

當ps腳本路徑包含空格並且路徑從%〜dp0%派生時,如何從批處理文件運行powershell腳本

[英]How to run powershell script from batch file while the ps script path has spaces and path is derived from %~dp0%

我有一個批處理文件Install.bat,它調用GetVersion.ps1 powershell腳本。 這兩個腳本位於同一文件夾(C:\\ Install_Media)中,我通過獲取批處理文件所在的目錄(使用%〜dp0%)來調用Powershell腳本。

如果這些文件所在的路徑中沒有空格,則以下代碼可以很好地發揮作用。 如果路徑中有空格,則不會執行shellscript(例如C:\\ Install Media)。 該腳本停止說“ C:\\ Install”一詞未被識別為cmdlet,函數,腳本的名稱。

@ECHO OFF
set SRC_DIR=%~dp0%
Powershell set-executionPolicy remotesigned
Powershell %SRC_DIR%\GetSLMClientVersion.ps1
Powershell set-executionPolicy restricted

錯誤畫面截圖

參數擴展在表達式的開頭僅使用單個%字符。 另外,您不需要來回更改執行策略。 powershell.exe具有一個用於臨時覆蓋執行策略的參數。 TheIncorrigible1在注釋中指出的那樣,最好通過將路徑放在引號中來處理路徑中的空格。

將代碼更改為此:

@echo off
powershell.exe -ExecutionPolicy Bypass -File "%~dp0\GetSLMClientVersion.ps1"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM