Это мой первый пакетный файл, а также мой первый раз с использованием пакетного языка (я обычно использую UNIX и не очень разбираюсь в командах Windows).
Я создаю командный файл с именем install.bat
, который выполняет всю работу по установке приложения Java из исходных файлов. Вот снимок раздела установки:
@ECHO off
SET INSTALL_DIR=%1\
SET SRC_DIR=sources\
SET LIB_DIR=lib\
SET IMG_DIR=img\
SET BIN_DIR=bin\
SET INIT_DIR=%CD%
SET MAIN_CLASS=%SRC_DIR%\main\Main.java
SET CLASS_PATH=%LIB_DIR%log4j.jar;%LIB_DIR%jdom.jar;
SET JAR_NOM=myApp.jar
SET JAR_MF=MANIFEST.MF
:BEGIN
CLS
ECHO Checking directory...
IF EXIST %INSTALL_DIR% (
GOTO Ask_Overwrite
) ELSE (
GOTO Install
)
:Ask_overwrite
SET OVERW=Y
SET /P OVERW="The program is already installed. Overwrite? ([Y]/N): "
IF %OVERW%==N GOTO Cancel
IF %OVERW%==n GOTO Cancel
IF %OVERW%==Y (
RD /S /Q %INSTALL_DIR% <--- Here was the error
GOTO Install
)
IF %OVERW%==y (
RD /S /Q %INSTALL_DIR% <--- Here was the error
GOTO Install
)
GOTO Ask_overwrite
:Install
MD %INSTALL_DIR%
XCOPY . %INSTALL_DIR% /E
CD /D %INSTALL_DIR%
MD %BIN_DIR%
ECHO Compiling...
javac -cp %CLASS_PATH% -sourcepath %SRC_DIR% %MAIN_CLASS% -d %BIN_DIR%
ECHO Creating JAR file...
jar cfm %JAR_NOM% %JAR_MF% -C %BIN_DIR% .
ECHO Succes! The application has been installed in %INSTALL_DIR%
GOTO CleanUp
:Abort
ECHO Abort! The application has not been installed.
GOTO CleanUp
:Cancel
ECHO Canceled by user. The application has not been installed.
GOTO END
:Cleanup
REM Code for clean up
GOTO END
:END
CD /D %INIT_DIR%
PAUSE
ПРИМЕЧАНИЕ. Команды javac и jar верны, по крайней мере, работают на моем компьютере.
Хорошо, скрипт работает правильно, когда я тестирую его с INSTALL_DIR
, принадлежащим тому же диску, на котором я его выполняю, но если я использую целевой каталог вне диска, на котором я выполняю, у меня возникают проблемы.
Выполнение без проблем (вызывается в сеансе cmd.exe):
C:\Users\TC\testInstall> install.bat .\..\installTarget
C:\Users\TC\testInstall> install.bat C:\Users\TC\installTarget
Выполнение с проблемами (вызывается в сеансе cmd.exe):
C:\Users\TC\testInstall> install.bat D:\Documents\installTarget
Проблемы возникают, когда я пытаюсь специально копировать файлы, а также создавать и удалять каталоги.
Я надеюсь, что кто-нибудь подскажет мне, какие опции я должен использовать для решения проблем.
Привет!