解答:Powershell-如何将参数存储到变量中并使用它?

时间:2018-09-05 11:16:07

标签: powershell arguments texturepacker

我已经编写了用于批处理地图集的CMD脚本,并且工作正常。

CMD脚本

set OutputDir=%1
set MaxSize=%2
set Scale=%3

set TpCmd=--format unity-texture2d --smart-update --max-size %MaxSize% --scale %Scale%
TexturePacker %TpCmd% --data "%OutputDir%.tpsheet" --sheet "%OutputDir%.png" "D:\xxx"



最近,我正在学习PowerShell,并尝试编写一个可以像上面一样工作的脚本。

PowerShell脚本

$AtlasMaxSize = 4096
$AtlasScale = 0.5

function Pack-Atlas($FileName) {
    $AtlasOptions = --format unity-texture2d --smart-update --max-size $AtlasMaxSize --scale $AtlasScale
    TexturePacker $AtlasOptions --data "$FileName.tpsheet" --sheet "$FileName.png" "D:\xxx"
}



但这似乎不是声明$ AtlasOptions变量的正确方法。
我认为可能需要某种方式来存储选项,有人可以帮助我还是提供一些关键字? 。



更新

感谢@gvee和@TobyU
我已经编辑了脚本。 。

function Pack-Atlas($FileName, $AtlasMaxSize, $AtlasScale) {
    $AtlasOptions = "--format unity-texture2d --smart-update --max-size $AtlasMaxSize --scale $AtlasScale"
    TexturePacker $AtlasOptions --data "$FileName.tpsheet" --sheet "$FileName.png" $TargetPath
}

但似乎不起作用。 那是我收到的错误消息:

TexturePacker ::错误:未知参数
--format unity-texture2d-智能更新--max-size 4096 --scale 0.5-请检查参数或访问http://www.codeandweb.com/texturepacker以获取较新版本

2 个答案:

答案 0 :(得分:0)

您需要将变量的值放在如下所示的引号中,以正确进行声明:

$AtlasMaxSize = 4096
$AtlasScale = 0.5

function Pack-Atlas($FileName) {
    $AtlasOptions = "--format unity-texture2d --smart-update --max-size $global:AtlasMaxSize --scale $global:AtlasScale"
    TexturePacker "$AtlasOptions --data '$($FileName).tpsheet' --sheet '$($FileName).png' 'D:\xxx'"
}

如果您的值不是数字,则应始终这样做。

答案 1 :(得分:0)

您需要扩展功能以具有其他可以传入的参数:

function Pack-Atlas ($FileName, $AtlasMaxSize, $AtlasScale) {
    $AtlasOptions = "--format unity-texture2d --smart-update --max-size $AtlasMaxSize --scale $AtlasScale"
    TexturePacker $AtlasOptions --data "$FileName.tpsheet" --sheet "$FileName.png" "D:\xxx"
}

然后您可以传递其他参数:

Pack-Atlas -FileName "/temp/foo.bar" -AtlasMaxSize 4096 -AtlasScale 0.5