【发布时间】:2011-12-30 23:24:20
【问题描述】:
我正在尝试编写一个脚本来解析一个目录,在具有相同名称但扩展名不同的其他文件中找到给定扩展名的 3 个最新文件,然后将输出传递给命令行程序。
到目前为止我有:
$file = dir test -Exclude *.md5 | sort -prop LastWriteTime | select fullname -last 3
\path\program argumentA $file[0] argumentB "argumentC"
\path\program argumentA $file[1] argumentB "argumentC"
\path\program argumentA $file[2] argumentB "argumentC"
不确定它是否很重要,但 argument2 需要用引号括起来才能让程序使用它。我最终会将输出写入文件,或者最好在附加问题中描述的另一行代码中使用输出。
我遇到的问题是,当我使用 $file[0] 作为参数时,什么也没有发生。当我使用存储在 $file[0] 中的文件名而不是使用变量时,它会运行,但不会传递参数 B 或参数 C。如果我从 cmd 运行它,我会得到正确的输出。
我的问题是: 如何让程序识别变量? 如何让程序识别其他参数?
奖金问题: 该程序将输出文件列表。如何删除给定文件夹中除程序输出中列出的文件之外的所有内容?
【问题讨论】:
-
我不清楚您的意思是“一次只通过一条线”。您调用该程序三次,每次调用 4 个参数。你能更具体地说明你想要它做什么吗?
-
访问
$file[0].FullName会得到什么? -
$file[0].fullname和$file[0]相同:C:\file.txt -
谢谢。再看一遍,我明白你的意思了。它确实返回了输出,但没有传递参数 C。参数 B 传递正常。
-
有效的方法是将最后一个参数放在单引号中。感谢您的帮助。
标签: powershell parameter-passing