我创建了一个powershell脚本,将所选文件复制到预定位置 我创建了一个批处理文件,用于从Windows资源管理器“发送到”菜单调用Powershell脚本 批处理文件将选定的文件名作为参数发送到脚本。文件名可以包含空格。 批处理文件代码是
powershell "C:\copycommand.ps1 '%1'"
当选择多个文件时,我想将所有文件名作为数组发送到powershell脚本 我已经编写了powershell脚本来接受数组,但我无法从批处理文件中将文件名作为数组发送。
以下批处理脚本将所有文件名发送到批处理文件,但在文件名有空格时失败。
Powershell "C:\copycommand.ps1" %*
有没有办法可以将所有文件名发送到powershell脚本。
答案 0 :(得分:4)
我的bat文件看起来像(最后一行只用于调试,你可以删除它):
@echo off
for %%x in (%*) do (
powershell.exe -Command "C:\copycommand.ps1 '%%x'"
)
powershell.exe -noexit
我的powershell脚本是:
$args | %{ Write-host "do copy $_"}
示例输出是:
do copy C:\Users\Public\Desktop\SRWare Iron.lnk
do copy C:\Users\Public\Desktop\Mozilla Firefox.lnk
do copy C:\Users\Piotrek\Desktop\Windows 7 USB DVD Download Tool.lnk
更新版本
将bat文件更改为:
@echo off
set myvar=
for %%x in (%*) do call :concat %%x
echo %myvar%
powershell.exe -Command C:\copycommand.ps1 %myvar%
powershell.exe -noexit
goto :eof
:concat
set myvar=%myvar% '%1'
goto :eof