将其中带有空格的批处理变量传递到Powershell脚本吗?

时间:2019-04-11 19:53:25

标签: powershell batch-file

我有一个批处理/ powershell脚本,用于列出所有电影和电视剧,但遇到一个小问题,将批处理变量传递给powershell脚本时,批处理变量中不能有空格。

我在变量周围尝试了各种'和'组合,但是没有任何运气。

我的批处理变量

SETLOCAL enabledelayedexpansion
SET "listfolder=%CD%\ContentList\"

SET "listname1=TVSeries"
SET "RootFolder1=\\SERVER\Storage\TV Series\"
SET "Folder1Width=70"
SET ScanFolder1=TRUE

我的批处理代码可以运行并将变量传递给powershell

"%listfolder%Script\Powershell.exe" -executionpolicy remotesigned -File "%listfolder%Script\folder1list.ps1" %RootFolder1% %listname1% %Folder1Width%

我的Powershell脚本代码来设置变量。

param([String]$RootFolder1, [String]$listname1, [int32]$Folder1Width)

如果我在%RootFolder1%路径中有空格,而没有空格,则将这三个变量传递给powershell都很好,这是我得到的错误。

C:\Users\hflat\Desktop\Folder Content List Maker v4.5\ContentList\Script\folder1list.ps1 : Cannot process argument
transformation on parameter 'Folder1Width'. Cannot convert value "TV" to type "System.Int32". Error: "Input string was
not in a correct format."

我在这里How to pass in a string with spaces into PowerShell?找到了解决方法

起作用的是使用带有/ S的cmd包装器来解开外部引号并删除我自己的powershell.exe路径

cmd /S Powershell.exe -executionpolicy remotesigned -File "%listfolder%Script\folder1list.ps1" "%RootFolder1%" "%listname1%" "%Folder1Width%"

1 个答案:

答案 0 :(得分:0)

我在这里How to pass in a string with spaces into PowerShell?找到了解决方法

起作用的是使用带有/ S的cmd包装器来解开外部引号并删除我自己的powershell.exe路径

cmd /S Powershell.exe -executionpolicy remotesigned -File "%listfolder%Script\folder1list.ps1" "%RootFolder1%" "%listname1%" "%Folder1Width%"