5

cmd 引数に powershell 変数を使用したいのですが、その方法がわかりません。

function iptc($file)
{        
        $newcredit = correspondance($credit)
        $cmd = '& C:\exiftool\exiftool.exe -S -t -overwrite_original -Credit=$newcredit $file.FullName'
        Invoke-Expression $cmd
}

たとえば、newcredit は「James」にすることができますが、私の場合、コマンド -Credit を実行すると「$newcredit」のみになります。

よろしく

4

1 に答える 1

7

単一引用符 (' ') は、文字列内の変数値を展開しません。二重引用符 (" ") を使用して、これに対処できます。

$cmd = "& C:\exiftool\exiftool.exe -S -t -overwrite_original -Credit=$newcredit $file.FullName"

または、私が最もよく使用する方法で、文字列の書式設定を使用します。

$cmd = '& C:\exiftool\exiftool.exe -S -t -overwrite_original -Credit={0} {1}' -f $newcredit, $file.FullName

いずれかのパラメーターにスペースが含まれている場合、出力でパラメーターを二重引用符で囲む必要があります。その場合、私は間違いなく文字列フォーマットを使用します:

$cmd = '& C:\exiftool\exiftool.exe -S -t -overwrite_original -Credit="{0}" "{1}"' -f $newcredit, $file.FullName
于 2013-05-28T15:09:09.563 に答える