如何使用ps1脚本打开image.png?

时间:2018-02-19 19:23:20

标签: powershell powershell-v2.0

设置以下<div id="content"></div> <button class="check">Check</button> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script> var GetID = { a: 0, toString() { return this.a++; } } var num = 4; $(".check").click(function(){ for(i=0; i<num;i++){ $("#content").append("<input id='input"+GetID+"' type='text'><br>"); } }); </script>变量以自动查找USB驱动器号,并使用该变量在USB上打开图像不起作用。它在cmd中打印出“G:\ image.png”。

$usbDriveLetter

但是如果我不使用var并在PowerShell脚本中生成“G:\”static,那么图像就可以正常打开。

$usbDriveLetter = (gwmi win32_volume -f 'label=''USB_NAME_HERE''').Name;
"$usbDriveLetter" + "image.png"

那我在这里做错了什么?我们如何使用ps1脚本动态打开图像?

2 个答案:

答案 0 :(得分:1)

组合两个字符串时,会得到一个字符串。如果引用路径("G:\image.png"),它的行为将相同。

使用Invoke-Item执行路径:

$usbDriveLetter = (gwmi win32_volume -f 'label=''USB_NAME_HERE''').Name
Invoke-Item -Path ("$usbDriveLetter" + "image.png")

您也可以使用呼叫操作员&

$usbDriveLetter = (gwmi win32_volume -f 'label=''USB_NAME_HERE''').Name
& ("$usbDriveLetter" + "image.png")

答案 1 :(得分:1)

Frode F.'s helpful answer提供了有效的解决方案。

对于 时需要& ,PowerShell的调用运算符

为了执行命令/打开指定为未引用的文字字符串的文档,您需要&

也就是说,无论何时指定命令名称(或路径)/文档文件名(或路径),都需要 &

  • :作为引用字符串(例如,"G:\image.png"

  • 或:作为表达式的结果 (例如("$usbDriveLetter" + "image.png");同上$(...)

    < / LI>

注意:

  • 如果打开文档 (而不是调用可执行文件),您可以使用Invoke-Item代替&

  • 如果您在文件资源管理器中尝试打开文件夹路径 Invoke-Item可以正常工作。< / p>

至于 为什么,您需要&

PowerShell有 两种基本解析模式

  • 参数模式,与传统的 shell一样

  • 表达式模式,与传统的编程语言类似。

正在运行Get-help about_Parsing会介绍这些模式。

简而言之, 第一个令牌决定应用哪种模式执行/打开某事,必须在参数模式下解析(在表达式模式下,结果只是输出);因此,第一个标记必须是:

  • :文字,不带引号的命令/文件名称或路径,如上所述。
  • 或:&,在这种情况下,下一个参数 - 可以指定为带引号的字符串或表达式 - 被解释为命令/文档名称或执行/打开的路径。