还有一个bash(现在是.bat)脚本

时间:2010-07-11 13:34:32

标签: windows image batch-file cycle

我需要在许多目录中转换大约12000个TIF文件,并尝试编写bash-script:

#!/bin/bash
find -name "*.tif" | while read f
do
 convert "$f" "${f%.*}.png"
 rm -f "$f"
done

为什么会这样说:x.sh:6:语法错误:文件结束意外(期待“做”)以及我应该做什么?


非常感谢你们所有人,但是我被骗了:应该用它运行的计算机可以在Windows下运行。我不知道如何使用DOS中的字符串和循环,现在我的脚本看起来像:

FOR /R %i IN (*.tif) DO @ (set x=%i:tif%png) & (gm convert %i %xtif) & (erase /q /f %i)

%i - 其中一个.tif文件。

%x - 扩展名为.png的文件名

gm convert - graphics magick utility,与图像magick在linux上的转换类似。

1 个答案:

答案 0 :(得分:3)

语法看起来没问题,但是如果它是EOL的问题,请尝试在do之前添加分号来修复语法错误(或检查新行实际存在/编码为ghostdog74建议):

find -name "*.tif" | while read f ; do # ...

请注意,查找/读取模式不健壮。使用可以直接使用find的exec功能(感谢Philipp的内联命令):

find -name "*.tif" -exec sh -c 'file=$0 && convert "$file" "${file%.tif}.png"' '{}' ';' -delete