我试图使用 powershell 在文件夹中给定类型的所有文件上运行程序。
我首先做了一个测试,看看我是否可以遍历文件夹中的所有文件类型,并写了这个:
$files = ls *.inp
foreach ($file in $files) {echo $file.basename}
哪个输出:
myfile1.inp
myfile2.inp
myfile3.inp
到现在为止还挺好。现在,当我将下一位放在 for 循环中时,它不起作用:
$files = ls *.inp
foreach ($file in $files) {myProgram arg1=$file.basename}
请注意,myProgram 的路径已经是我的路径变量的一部分,所以我不必写 myProgram.exe 的完整路径,我可以只写 myProgram。此外,arg1 = 我要处理的文件。
我想看看发生了什么,所以我在循环中回显了上述命令:
foreach ($file in $files) {echo myProgram arg1=$file.basename}
...输出:
myProgram arg1=myfile.inp.basename
所以由于某种原因,在第二种情况下,basename 方法没有做我想要的。
我将脚本更改为以下内容,效果很好:
foreach ($file in $files) {echo myProgram arg1=$file}
我的问题是,为什么 $file.basename 在两种情况下输出不同的东西?如果我只想在第二种情况下使用基本名称,我该怎么做?
谢谢!