【问题标题】:"Input line is too long" in BAT filesBAT 文件中的“输入行太长”
【发布时间】:2012-10-05 18:13:06
【问题描述】:

我需要在一天内多次编译我的 .jar 文件,所以我有了一个想法,我可以更快地编译一个 BAT 文件,它是:

call "jar cmf 'META-INF/MANIFEST.MF' 'Bounce Tales.jar' a a.class aa.png ab.png ac.png ad.png ae.png af.png ag.png ah.png ai.png aj.png ak.png al.png am.png an.png ao.png ap.png aq.png ar.png as.png at.png au.png av.png aw.mid ax.mid ay.mid az.mid b b.class ba.mid bb.mid bc.mid bd.mid be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv c.class c.png d.class d.png e.class e.png f.class f.png g.class g.png h.class h.png i.class i.png icon.png j.class j.png k.class k.png l.class l.png lang.bs-BA lang.cs-CZ lang.de lang.hr-HR lang.hu-HU lang.mk-MK lang.sk-SK lang.sl-SI lang.sq lang.sr-YU lang.xx m.class m.png n.class n.png o.class o.png p.class p.png q.class q.png r.class r.png RMIDlet.class s.png t.png u.png v.png w.png x.png y.png z.png"

这导致了一个错误:

输入行太长。

我不知道如何让它更短,当我将命令复制粘贴到控制台时,它编译得很好......

【问题讨论】:

标签: batch-file call


【解决方案1】:

您可以将您的行分解为多个变量,并使用它们来调用您的流程。这就是我们用来使路径长于 MSDOS 限制命令行的字符数的方式。

set a=a a.class aa.png ab.png ac.png ad.png ae.png af.png ag.png ah.png ai.png aj.png ak.png al.png am.png an.png ao.png ap.png aq.png ar.png as.png at.png au.png av.png aw.mid ax.mid ay.mid az.mid 

set b=b b.class ba.mid bb.mid bc.mid bd.mid be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv c.class c.png d.class d.png e.class e.png f.class f.png g.class g.png h.class h.png i.class i.png icon.png j.class j.png

set c=k.class k.png l.class l.png lang.bs-BA lang.cs-CZ lang.de lang.hr-HR lang.hu-HU lang.mk-MK lang.sk-SK lang.sl-SI lang.sq lang.sr-YU lang.xx m.class m.png n.class n.png o.class o.png p.class p.png q.class q.png

set d= r.class r.png RMIDlet.class s.png t.png u.png v.png w.png x.png y.png z.png

call "jar cmf 'META-INF/MANIFEST.MF' 'Bounce Tales.jar' %a% %b% %c% %d%"

【讨论】:

  • 但这不行,因为是在展开之后才开始计数的,这样8191个字符的限制还是没有改变
【解决方案2】:

本题抄袭:how to increase the input line length(max) in windows?

要运行带有长输入字符串的批处理文件,您必须用 ^ 字符分隔它。

call "jar cmf 'META-INF/MANIFEST.MF' 'Bounce Tales.jar' a a.class aa.png ab.png ac.pngad.png ae.png af.png ag.png ^
ah.png ai.png aj.png ak.png al.png am.png an.png ao.png ap.png aq.png ar.png as.png at.png au.png av.png aw.mid ax.mid ^
ay.mid az.mid b b.class ba.mid bb.mid bc.mid bd.mid be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv c.class ^
c.png d.class d.png e.class e.png f.class f.png g.class g.png h.class h.png i.class i.png icon.png j.class j.png ^
k.class k.png l.class l.png lang.bs-BA lang.cs-CZ lang.de lang.hr-HR lang.hu-HU lang.mk-MK lang.sk-SK lang.sl-SI ^
lang.sq lang.sr-YU lang.xx m.class m.png n.class n.png o.class o.png p.class p.png q.class q.png r.class r.png ^
RMIDlet.class s.png t.png u.png v.png w.png x.png y.png z.png"

【讨论】:

  • 这个答案有两个严重的问题。 1) 续行不会延长允许的最大长度,它只是在您的文本编辑器中看起来更好。 2) 在这种情况下,您的行继续失败,因为引用了 ^ 字符。
【解决方案3】:

好的,我找到了。我用这个:

jar cmf "META-INF/MANIFEST.MF" "Bounce Tales.jar" a a.class aa.png ab.png ac.png ad.png ae.png af.png ag.png ah.png ai.png aj.png ak.png al.png am.png an.png ao.png ap.png aq.png ar.png as.png at.png au.png av.png aw.mid ax.mid ay.mid az.mid b b.class ba.mid bb.mid bc.mid bd.mid be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv c.class c.png d.class d.png e.class e.png f.class f.png g.class g.png h.class h.png i.class i.png icon.png j.class j.png k.class k.png l.class l.png lang.bs-BA lang.cs-CZ lang.de lang.hr-HR lang.hu-HU lang.mk-MK lang.sk-SK lang.sl-SI lang.sq lang.sr-YU lang.xx m.class m.png n.class n.png o.class o.png p.class p.png q.class q.png r.class r.png RMIDlet.class s.png t.png u.png v.png w.png x.png y.png z.png

我把它放在 BAT 文件中。

【讨论】:

  • 您能解释一下您所做的更改以及为什么会起作用吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多