Выполнение длинной команды в командной строке 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"
Поскольку это длинная команда с множеством передаваемых параметров, я создал командный файл для ее запуска, но он выполняет только первую строку, каждая вторая строка выполняется как отдельная команда. Есть ли способ запустить всю команду вместе?
Благодарю вас
3 ответа
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
Зачем вам разрывы строк, если это входит в пакетный файл? Удалите их (и символы \) и просто включите перенос слов, чтобы их было легче редактировать.