我需要“翻译”或将旧的批处理文件重写为powershell。
Command是一个exe文件。它看起来大致如下:
dir1 \ dir2 \ XsltTransform.exe -i dir_1 \ dir_2 \ blah.xml -x dir_x \ dir_y \ something.xslt -o path1 \ path2 \ result.html
我对 -i,-x,和 -o 位有点困惑
另外一些命令甚至还有 -r,-p,-a,-b,-l 。
我知道他们可能意味着某种选择。
但我似乎无法在Google或StackOverflow上找到。
答案 0 :(得分:0)
您的示例代码有一个EXE文件。我假设您可以访问生成EXE的源代码。
-i -x -o
都是输入参数。 在EXE 中的某个地方,有一些处理这些参数的代码并将它们存储到变量中。
-i dir_1\dir_2\blah.xml -x dir_x\dir_y\something.xslt -o path1\path2\result.html
因此,dir_1\dir_2\blah.xml
会(可能)存储到某个变量中以供进一步处理,依此类推。
在阅读此答案时,请同时阅读this。保持Microsoft TechNet和MSDN网站方便 - 它有帮助:)
为了能够使用“-x -y”参数启动Powershell脚本,您需要在脚本的顶部定义以下内容。
基本用法
Param(
[string]$x,
[string]$y
)
在这里,您将脚本称为script -x -y
这将接受两个参数-x和-y。无论您输入什么内容都存储为字符串(在此示例中),变量$x $y
。
如果您想要任何其他数据类型,只需更改[string]
值。
高级用法
[alias("myalias")]
构造使参数具有别名。如果您有一个长变量名称,但命令行使用需要更短的别名,这会有所帮助。[parameter(Mandatory = $false)]
构造使参数可选。e.g。
Param(
[parameter(Mandatory = $true)]
[alias("myalias1")]
[string]$mylongvariablename1,
[parameter(Mandatory = $false)]
[alias("myalias2")]
[string]$mylongvariablename2,
....
在上面的示例中,您将脚本调用为script -myalias1 -myalias2
(myalias2当然是一个可选的参数)。
答案 1 :(得分:0)
我想我刚才通过四处寻找答案。
首先你可以使用
去目录帮助[whatever_command] 它将为您提供所有选项
或者有时你必须在我的情况下使用(exe文件)
XsltTransform /?