命令行循环对目录中的所有文件运行命令(如果可能,加上子目录)

命令行循环对目录中的所有文件运行命令(如果可能,加上子目录)

我认为这很容易做到,但我对 Windows 的命令行实用程序毫无经验。基本上,我需要遍历目录中的所有文件(如果它可以遍历子目录就太好了,但如果需要,我可以在 5 个目录中运行它),获取名称作为变量,然后运行它

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

我看见在命令提示符的循环中动态命名文件。我可以使用这个吗(用上面的命令交换 SET...)?所讨论的计算机上的空间非常有限,因此在此阶段运行此操作之前我无法执行备份(我知道这很糟糕)。

答案1

奇怪的是,有一个包含递归部分的响应。

嗯,根据如何在批处理文件中循环遍历匹配通配符的文件,我能够做到这一点。 以下是执行方式:

 cd path_to_root
 for /R %%f in (*.tif) do (
 "C:\Program Files\ImageMagick-6.7.6-Q16\convert.exe" -compress LZW 
    -colorspace Gray -colors 32 "%%f" "%%f"
 )

答案2

打开 PowerShell

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

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

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

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

这应该能让你了解如何去做你想做的事情。

答案3

我有一个类似的任务-从 cmd 中删除目录中每个 pdf 的最后 3 页

for %f in (*.pdf) do ( qpdf "%f" --pages . 1-r4 -- --replace-input)

相关内容