我想为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”。

问候

最佳答案

单引号('')不会在字符串中扩展变量值。您可以使用双引号(“”)来解决此问题:

$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

关于cmd参数的Powershell变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16794736/

10-09 23:32