Назад | Перейти на главную страницу

Выполнение длинной команды в командной строке windows xp

Я использую WindowsXP и хочу запустить следующую команду:

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"

Поскольку это длинная команда с множеством передаваемых параметров, я создал командный файл для ее запуска, но он выполняет только первую строку, каждая другая строка выполняется как отдельная команда. Есть ли способ запустить всю команду вместе?

Спасибо

Windows использует символ каретки (^) в качестве символа продолжения строки, а не обратной косой черты. Если вы замените обратную косую черту в конце каждой строки кареткой, она будет выполняться как одна команда.

Прежде всего, с помощью DELAYEDEXPANSION и расширенной темы вы можете объединить отдельные строки в одну строку в пакетном файле, используя символ моркови, чтобы сделать ваш пакетный файл красивее.

Но самый быстрый способ - это добавить все строковые аргументы в одну строковую переменную MYARGS (без префикса tomcat.exe). Затем объединенная переменная MYARGS равна всей строке аргументов вашей командной строки, затем вы можете выполнить обработку, чтобы проверить длину команды, используя пакетный файл DOS, а затем запустить его, например:

@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

Зачем вам нужен перенос строки, если он идет в пакетный файл? Удалите их (и символы \) и просто включите перенос слов, чтобы упростить редактирование.