问题几乎就是标题中提到的内容。
我有很多MapTiler创建的PNG文件。确切地说是24083个文件。它们位于许多文件夹中,在许多文件夹中,即文件夹树,duh。事实上,手动PNGCrush所有这些是最浪费时间。
有人有算法分享给我吗?一个可以递归粉碎所有这些PNG的东西?
我有一台Windows PC,并希望用Java或PHP比而而不是其他语言(因为我已经很清楚了)但是其他的东西可能还不错。
谢谢!
答案 0 :(得分:11)
您不需要任何特殊功能,只需在Windows命令提示符中使用FOR
命令即可。
使用此行:
FOR /R "yourdir" %f IN (*.png) DO pngcrush "%f" "%f.crushed.png"
"yourdir"
是存储输入文件的根目录。
最后两个%f
:
-ow
option added in 1.7.22进行就地操作:
FOR /R "yourdir" %f IN (*.png) DO pngcrush -ow "%f"
有关FOR
的详细信息,请参阅this page。
答案 1 :(得分:1)
程序'sweep'http://users.csc.calpoly.edu/~bfriesen/software/files/sweep32.zip允许您以递归方式对目录中的所有文件运行相同的命令。
答案 2 :(得分:1)
请参阅:RecursiveIteratorIterator RecursiveDirectoryIterator 和exec(或类似)
您可以使用:
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('%your-top-directory%'));
foreach ($it as $entry) {
if (strtolower($entry->getExtension()) == 'png') {
// execute command here
}
}