命令行循环以在目录(如果可能的话,还有子目录)中的所有文件上运行命令


14

我以为这很容易做到,但是我对Windows的命令行实用程序零经验。基本上,我需要遍历目录中的所有文件(如果可以执行子目录,则很棒,但是如果需要,我可以在5个目录中的每一个上运行它),获取名称作为变量,并使其运行

"C:\Program Files\ImageMagick-6.7.6-Q16\convert.exe" -compress LZW 
   -colorspace Gray -colors 32 file_var file_var

在循环的命令提示符下看到了动态命名文件。我可以使用它(用上面的命令交换SET ...)吗?有问题的计算机上的空间超出了限制,因此在此阶段运行备份之前,我无法执行备份(我知道这很糟糕)。


罗伯特,如果您已经成功回答了自己的问题,请添加您自己的答案并将其接受为正确的答案。
朱利安·奈特

我认为这不是您想要的,它的结尾("%%f" "%%f")只会将文件名(具有完全限定的路径)放置两次。您可能想使用类似"%%f" "%%~dpnf.gif"更改输出文件扩展名的方法。
Synetech

@JulianKnight-谢谢,我实际上是想回去的时候,但是我认为必须这样做。从那以后有点忘了这个问题。
罗伯特

Answers:



5

打开PowerShell

$files = Get-ChildItem -Recurse 
foreach ($file in $files){
    c:\windows\System32\notepad.exe $file.FullName
}

Get-ChildItem从当前子目录中检索文件列表作为对象。“-递归”将包括子目录。这会将其放入数组$ Files。

foreach循环遍历每个文件,并使用每个文件的完整文件名路径的命令行参数调用记事本。

注意:在带有几个小文本文件的目录中测试上述代码,因为它将为每个文件打开一个记事本实例。

那应该给您一个想法,让您知道如何去做。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.