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 回答