FType脚本省略"%1"跑步的时候

时间:2016-08-18 20:35:23

标签: batch-file cmd

我正在尝试创建一个.bat文件,将Acrobat DC设置为多种文件类型的默认程序,因为我需要在我的一位同事意外部署Acrobat Reader DC之后在办公室设置中使用多台计算机所有的工作站。

目前我所拥有的是:

FTYPE Acrobat.Document.2015=C:\Program Files (x86)\Adobe\Acrobat 2015\Acrobat\Acrobat.exe "%1"
ASSOC .pdf=Acrobat.Document.2015

但在运行脚本(作为管理员)后,当我输入

FTYPE Acrobat.Document.2015

检查,输出:

Acrobat.Document.2015=C:\Program Files (x86)\Adobe\Acrobat 2015\Acrobat\Acrobat.exe ""

我不确定为什么在运行脚本时没有传递%1,因为当我将整个命令输入CMD时它可以正常工作。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

我不确定为什么在运行脚本时没有传递%1

这是因为%1在批处理文件中有特殊含义 - 它表示传递给批处理文件的命令行参数:

  

命令行参数(或参数)是传递给的任何值   批处理脚本:

C:> MyScript.cmd January 1234 "Some value"
     

参数也可以通过CALL传递给子程序:

CALL :my_sub 2468
     

您可以使用%后跟它来获取任何参数的值   命令行上的数字位置。传递的第一个项目是   始终%1第二项始终为%2,依此类推

来源 - parameters

由于您没有使用任何参数调用批处理文件%1是一个空字符串。

为了将文字%1传递给ftype命令,您需要escape %的正常含义,使用双%%和使用%%1代替%1

请注意,您还应该引用ftype的第一个参数,因为它包含空格。

修改后的批处理文件:

FTYPE Acrobat.Document.2015="C:\Program Files (x86)\Adobe\Acrobat 2015\Acrobat\Acrobat.exe" "%%1"
ASSOC .pdf=Acrobat.Document.2015

进一步阅读

  • An A-Z Index of the Windows CMD command line - 与Windows cmd相关的所有内容的绝佳参考。
  • assoc - 显示或更改文件扩展名与fileType
  • 之间的关联
  • ftype - 显示或更改FileType和可执行程序之间的链接。
  • parameters - 命令行参数(或参数)是传递给批处理脚本的任何值。
  • syntax - 逃脱字符,分隔符和引号。