, biz aslında (groovy.bat
itibaren) sonra %GROOVY_HOME\groovy.bat
yürütmek ve:
"%DIRNAME%\startGroovy.bat" "%DIRNAME%" groovy.ui.GroovyMain %*
içeri startGroovy.bat
bakarsak aşağıda alıntı (argümanları ile başa çıkmak için gerçekten çirkin kesmek görebilirsiniz): startyGroovy.bat
"a&b"
iç
nedenle
rem horrible roll your own arg processing inspired by jruby equivalent
rem escape minus (-d), quotes (-q), star (-s).
set _ARGS=%*
if not defined _ARGS goto execute
set _ARGS=%_ARGS:-=-d%
set _ARGS=%_ARGS:"=-q%
set _ARGS=%_ARGS:?=-n%
rem Windowz will try to match * with files so we escape it here
rem but it is also a meta char for env var string substitution
rem so it can't be first char here, hack just for common cases.
rem If in doubt use a space or bracket before * if using -e.
set _ARGS=%_ARGS: *= -s%
set _ARGS=%_ARGS:)*=)-s%
set _ARGS=%_ARGS:0*=0-s%
set _ARGS=%_ARGS:1*=1-s%
set _ARGS=%_ARGS:2*=2-s%
set _ARGS=%_ARGS:3*=3-s%
set _ARGS=%_ARGS:4*=4-s%
set _ARGS=%_ARGS:5*=5-s%
set _ARGS=%_ARGS:6*=6-s%
set _ARGS=%_ARGS:7*=7-s%
set _ARGS=%_ARGS:8*=8-s%
set _ARGS=%_ARGS:9*=9-s%
, "kaçış "-qa&b-q
için, komut dosyası içinde iki komut elde
'b-q' is not recognized as an internal or external command,
operable program or batch file.
elde ve süre sonsuz bir döngü neden," damaçla geliştirilmiş".
Groovy komut dosyasını çalıştırmadan önce set DEBUG=true
ile görebilirsiniz. aşağıdaki gibi
kesmek demet başka hack ekleme, sen startGroovy.bat
benzer şekilde da &
kaçabilir:
rem escape minus (-d), quotes (-q), star (-s).
rem jalopaba escape ampersand (-m)
set _ARGS=%*
if not defined _ARGS goto execute
set _ARGS=%_ARGS:-=-d%
set _ARGS=%_ARGS:&=-m%
set _ARGS=%_ARGS:"=-q%
set _ARGS=%_ARGS:?=-n%
ve çıkış yapılmış ...
rem now unescape -s, -q, -n, -d
rem jalopaba unescape -m
rem -d must be the last to be unescaped
set _ARG=%_ARG:-s=*%
set _ARG=%_ARG:-q="%
set _ARG=%_ARG:-n=?%
set _ARG=%_ARG:-m=&%
set _ARG=%_ARG:-d=-%
Böylece:
groovy test.groovy "a&b"
a&b
Windows'ta daha açık/daha zarif bir çözümün bile mümkün olup olmadığından emin değilsiniz.
UNIX konsolunda 8
değerini veren groovy -e "println 2**3"
ile benzer bir durum görebilirsiniz, ancak pencerelerde (sonsuz döngü) kilitleniyor.
Bu mesaj groovy'nin kendisinden mi yoksa windows kabuğundan mı geliyor? MacOS'ta aşağıdaki çağrı ile mükemmel bir şekilde çalışır: 'groovy script.groovy a \ & b' – Opal
Opal, windows kabuğundan gelir. Bir \ & b ile aynı hatayı aldım: 'b' bir iç veya dış komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor. – Racoon
yeniden oluşturdu. Bu bir windows komut satırı şeydir. Karat ile kaçmayı ve çift tırnak kullanmayı içeren bir dizi düzeltmeler var, bunların hiçbiri işe yaramıyor. –