【问题标题】:Creating a PHP script from BASH code to run on Windows从 BASH 代码创建 PHP 脚本以在 Windows 上运行
【发布时间】:2011-03-21 02:59:08
【问题描述】:

我有这行代码:

convert 1234_Page_1_....png 1234_Page_2_....png output.pdf 

这会将列出的 png 合并为单个 pdf(使用 ImageMagick)。我有一堆这种格式的PNG文件。我想在 PHP 中创建一个循环,以对我拥有的所有文件执行转换/合并操作。对于在“Page”之前具有相同编号的所有文件,我希望将它们合并到一个具有相同编号作为名称的 PDF。有时要转换的页面超过两页。

对于本例,我希望“1234_Page_1_....png”和“1234_Page_2_....png”的结果为 1234.pdf。我希望文件“1235_Page_1_....png”和“1235_Page_2_....png”生成 1235.pdf,等等。

有人告诉我这是处理问题的 BASH 方法:

for i in `seq 1234 1350` ; do convert ${i}_Page_*.png ${i}_output.pdf ; done 

我想在一个可以在 Windows 上运行的 PHP 脚本中完成这项工作。

提前致谢, 杰克

【问题讨论】:

  • 为什么不运行Bash on Windows
  • 另外,您在回复your other question 时得到的 Perl 和 Python 脚本有什么问题?
  • Johnsyweb:我无法让您的 Python 脚本正常工作。 python -c "import os; [os.system('convert {0}_Page_*.png output_{0}.pdf'.format(str(i))) for i in xrange(int(raw_input('多少集有多少页?')))]" 是您的建议。我是否将其保存为 .py 文件,然后需要安装额外的软件?此外,由于我安装了 cygwin 并尝试了上述操作并得到了错误:line:1 syntax error near unexpected token '$'\r'' line:1 'for i in 'seq 312800 312860' ;
  • @Jake:这不是我的剧本。对这些答案的评论应该在这些答案下面——而不是在这个页面上。
  • 您收到该错误消息的原因是您使用 Windows 编辑器编辑了脚本,然后尝试在 Unix 类型的环境中运行它。运行dos2unix scriptname,Windows 行尾将转换为 Unix 行尾。不再有$'\r' 错误。此外,在 Bash 中使用 for i in {1234..1350} - 无需使用 seq

标签: php bash for-loop


【解决方案1】:

您收到该错误消息的原因是您使用 Windows 编辑器编辑了脚本,然后尝试在 Unix 类型的环境中运行它。运行dos2unix scriptname,Windows 行尾将转换为 Unix 行尾。不再有$'\r' 错误。此外,在 Bash 中使用 for i in {1234..1350} - 无需使用 seq

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 2017-11-04
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多