【问题标题】:Windows batch file to install multiple perl modules - only the first line runs用于安装多个 perl 模块的 Windows 批处理文件 - 仅运行第一行
【发布时间】:2013-05-08 14:37:04
【问题描述】:

我正在 Windows 上安装 Bugzilla,并且 checksetup.pl 要求我通过运行 ppm(Perl 包管理器)命令来安装一堆模块,如下所示:

C:\>ppm install TimeDate

这会正确运行,并安装 TimeDate 模块。

我以前没有做过太多命令行的事情,但我认为这是尝试它的好时机。所以我制作了一个名为 PerlModules.bat 的批处理文件:

ppm install Chart
ppm install Template-GD
ppm install MIME-tools
ppm install XML-Twig
ppm install PatchReader
ppm install perl-ldap
ppm install Authen-SASL
ppm install RadiusPerl
ppm install SOAP-Lite
ppm install JSON-RPC
ppm install JSON-XS
ppm install Test-Taint
ppm install HTML-Scrubber
ppm install Email-MIME-Attachment-Stripper
ppm install Email-Reply
ppm install TheSchwartz
ppm install Daemon-Generic
ppm install mod_perl
ppm install Apache-SizeLimit
ppm install Math-Random-Secure
ppm install TimeDate
ppm install DateTime
ppm install DateTime-TimeZone
ppm install Template-Toolkit
ppm install Email-Send
ppm install Email-MIME

运行它会产生以下输出:

E:\Program Files\Bugzilla>PerlModules.bat

E:\Program Files\Bugzilla>ppm install Chart
Downloading Chart-2.4.6...done
Unpacking Chart-2.4.6...done
Generating HTML for Chart-2.4.6...done
Updating files in site area...done
  18 files installed

E:\Program Files\Bugzilla>

所以看起来只有批处理文件的第一行实际运行,其余的什么都不做。

最后,我用ppm help 查找了 ppm 的手册页,发现我可以一次传递所有包名,省去了解决这个问题的麻烦,但我真的不明白为什么我的小批处理文件不起作用。

我认为批处理文件只是逐行输入到 shell 提示符,等待每个完成其工作,直到它们到达文件末尾。我在这个等式中遗漏了什么?

【问题讨论】:

  • 对不起,我从我的问题中挑选了一些信息,我似乎错过了一个关键点。 ppm 是 Perl 包管理器,它是一个可以正确运行的程序。我会更新问题。
  • 如果你有兴趣,这里有一些信息:docs.activestate.com/activeperl/5.6/faq/ActivePerl-faq2.html
  • Aaaaa 我刚刚注意到这个重复项:stackoverflow.com/questions/4036754/… 我通常会检查重复项,但我想这是结束了我与 Bugzilla 安装的漫长的一天。它不是完全重复,因为它涉及不同的 .bat 文件,但症状和答案是相同的。

标签: windows batch-file activeperl ppm


【解决方案1】:

在我的 Perl 安装中,命令 ppm 是一个批处理文件:ppm.bat(不是 .exe

当您从另一个批处理文件调用一个批处理文件时,调用批处理文件将与被调用的批处理文件一起终止

您需要使用call 才能从一个批处理文件中运行另一个批处理文件。

调用 ppm install 图表 调用 ppm install Template-GD 调用 ppm install MIME-tools 调用 ppm 安装 XML-Twig 调用 ppm 安装 PatchReader

【讨论】:

  • 谢谢,我不知道它是不是.bat,它只是用ActivePerl安装的。我会试着让你知道这是否是答案。
  • 刚刚试了一下,效果很好!我现在得到了一堆“没有要安装的软件包”,但至少这是预料之中的,因为我已经安装了它们。谜团解开了!
猜你喜欢
  • 2011-02-23
  • 2017-11-30
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
相关资源
最近更新 更多