Executando um comando longo no prompt de comando do windows xp

3

Estou usando o Windows XP e quero executar o seguinte comando:

tomcat6 //IS//AlfrescoTomcat --DisplayName="Alfresco Community Edition" \ 
--Description="Alfresco Tomcat Bundle - Repository and Share" \
--Install="C:\alfresco-community-tomcat-3.3\tomcat\bin\tomcat6.exe" \
--Startup="auto" \
--Jvm="C:\Program Files\Java\jdk1.6.0_18\jre\bin\server\jvm.dll" \
--Classpath="C:\alfresco-community-tomcat-3.3\tomcat\bin\bootstrap.jar" \
--StartMode=jvm --StopMode=jvm --StartClass=org.apache.catalina.startup.Bootstrap \
--StartPath="C:\alfresco-community-tomcat-3.3" --StartParams=start \
--StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop \
--JvmMs=256 --JvmMx=1024 --JvmSs=1024 \
++JvmOptions="-Dcatalina.home=C:\alfresco-community-tomcat-3.3\tomcat" \
++JvmOptions="-Dcatalina.base=C:\alfresco-community-tomcat-3.3\tomcat" \
++JvmOptions="-Djava.endorsed.dirs=C:\alfresco-community-tomcat-3.3\tomcat\endorsed" \
++JvmOptions="-Djava.io.tmpdir=C:\alfresco-community-tomcat-3.3\tomcat\temp" \
++JvmOptions="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" \
++JvmOptions="-Djava.util.logging.config.file=C:\alfresco-community-tomcat-3.3\tomcat\conf\logging.properties" \
++JvmOptions="-XX:MaxPermSize=256m" \
++JvmOptions="-XX:NewSize=256m" \
++JvmOptions="-Dalfresco.home=C:\alfresco-community-tomcat-3.3" \
++JvmOptions="-Dcom.sun.management.jmxremote=true"

Como este é um longo comando com muitos parâmetros sendo passados, eu criei um arquivo de lote para executá-lo, mas ele só executa a primeira linha, todas as outras linhas estão sendo executadas como um comando separado. Existe uma maneira de executar o comando inteiro juntos?

Obrigado

    
por Kara Marfia 30.06.2010 / 09:15

3 respostas

4

O Windows usa o caractere de circunflexo ( ^ ) como seu caractere de continuação de linha, não uma barra invertida. Se você substituir as barras invertidas no final de cada linha por um cursor, ele será executado como um comando.

    
por 30.06.2010 / 09:50
0

Por que você precisaria de quebras de linha se for para um arquivo de lote? Remova esses (e os \ caracteres) e apenas ative a quebra de linha para facilitar a edição.

    
por 30.06.2010 / 09:51
0

Primeiro de tudo, usando DELAYEDEXPANSION e tópico avançado, você pode combinar linhas separadas em uma única string dentro de um arquivo em lotes usando o caractere de cenoura, para tornar seu arquivo de lote mais bonito.

Mas, a maneira mais rápida seria adicionar todos os argumentos de string em uma variável de string chamada MYARGS (menos o prefixo tomcat.exe). Então, a variável concatenada MYARGS é igual a toda a string de seus argumentos de linha de comando, então você pode fazer o processamento para verificar o comprimento do comando, usando um arquivo de lote do DOS e então executá-lo, assim:

@echo off
setlocal ENABLEDELAYEDEXPANSION
:: additional content here
:: ....
set #=%MYARGS%
set length=0
:loop
if defined # (
  set #=%#:~1%
  set /A length += 1
  goto :loop
)
if %length% GTR 8191 (
  echo MYARGS is %length% characters long.  The total length of environment variable after you
  echo expand them cannot contain more than 8191 characters under Windows 2003+
  GOTO :end
) else if %length% GTR 2047 (
  echo MYARGS is %length% characters long.  The total length of environment variable after you
  echo expand them cannot contain more than 2047 characters under Windows XP
  GOTO :end
)
:startit
tomcat6.exe %MYARGS%
:end
pause
    
por 07.12.2011 / 19:03