3

選択したファイルを所定の場所にコピーする PowerShell スクリプトを作成しました。
Windows エクスプローラーの [送信先] メニューから Powershell スクリプトを呼び出すバッチ ファイルを作成しました。
バッチ ファイルは、選択したファイル名をパラメーターとしてスクリプトに送信します。ファイル名にはスペースを含めることができます。バッチファイルのコードは

powershell "C:\copycommand.ps1 '%1'"

複数のファイルが選択されている場合、すべてのファイル名を配列として powershell スクリプトに送信したいと考えています。
配列を受け入れるように powershell スクリプトを作成しましたが、バッチ ファイルからファイル名を配列として送信できません。

以下のバッチ スクリプトは、すべてのファイル名をバッチ ファイルに送信しますが、ファイル名にスペースが含まれていると失敗します。

Powershell "C:\copycommand.ps1" %*

すべてのファイル名を powershell スクリプトに送信する方法はありますか。

4

1 に答える 1

6

私の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

更新版

バットファイルを次のように変更します。

@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
于 2013-04-10T19:43:01.727 に答える