2016-11-17 4 views
0

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

C:/Users/Boss/AppData/Local/Temp/_.vbs(3, 1) Microsoft VBScript runtime error: Path not found 

вся идея этого сценария состоит в DONWLOAD кота (и не только) поместить его в указанном каталоге, распаковать и установить его теперь по какой-то причине метод UnZip отлично работает для скачивания и unziping Ant, но для Tomcat это не так. Ниже приведены методы installAnt и installTomcat и метод UnZip.

:installAnt 
    ::----- ANT Section -----:: 

    :: Setup Apache Ant if Ant does not exist 
    md "%HOMEDRIVE%\Apache\apache-ant-1.9.7\" 2>nul 

    :: Set filename variable 
    SET "FILENAME=%~dp0\apache-ant-1.9.7-bin.zip" 

    :: Download ANT from mirror 
    bitsadmin.exe /transfer "Apache Ant Download" http://mirrors.ukfast.co.uk/sites/ftp.apache.org//ant/binaries/apache-ant-1.9.7-bin.zip "%FILENAME%" 

    :: Copy Apache Ant to C:\Apache 
    xcopy "%~dp0apache-ant-1.9.7-bin.zip" "%HOMEDRIVE%\Apache\." 

    :: Delete zip file from curent directory 
    del "%~dp0apache-ant-1.9.7-bin.zip" 

    :: Unzip Apache Ant to C:\Apache 
    call :UnZipFile "%HOMEDRIVE%\Apache\" "%HOMEDRIVE%\Apache\apache-ant-1.9.7-bin.zip" 

    :: Delete zip folder 
    del "%HOMEDRIVE%\Apache\apache-ant-1.9.7-bin.zip" 

    :: Set ANT_HOME path 
    set "ANT_HOME=%HOMEDRIVE%\Apache\apache-ant-1.9.7" 
    setx ANT_HOME "%HOMEDRIVE%\Apache\apache-ant-1.9.7" /m 

    :: Add ANT to path 
    set "path=%PATH%;%ant_home%\bin" 
    setx path "%PATH%" /m 

    goto checkIvy 

:installTomcat 
    ::----- Tomcat Section -----:: 
    echo Installing tomcat 
    :: Setup Apache Tomcat if Tomcat does not exist 
    md "%HOMEDRIVE%\Apache\apache-tomcat-7.0.56\" 2>nul 

    :: Set filename variable 
    SET "FILENAME=%~dp0\apache-tomcat-7.0.56.zip" 

    :: Download Tomcat from mirror 
    bitsadmin.exe /transfer "Apache Tomcat Donwload" http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.56/bin/apache-tomcat-7.0.56.zip "%FILENAME%" 


    :: Copy Apache Tomcat to C:\Apache 
    xcopy "%~dp0apache-tomcat-7.0.56.zip" "%HOMEDRIVE%\Apache\." 

    :: Delete zip file from curent direcotry 
    del "%~dp0apache-tomcat-7.0.56.zip" 

    :: Unzip Apache Tomcat to C:\Apache 
    call :UnZipFile "%HOMEDRIVE\Apache\" "%HOMEDRIVE%\Apache\apache-tomcat-7.0.56.zip" 

    pause 

    rem :: Delete zip folder 
    rem del "%HOMEDRIVE%\Apache\apache-tomcat-7.0.56.zip" 

    rem :: Set TOMCAT_HOME 
    rem set "TOMCAT_HOME=%HOMEDRIVE%\Apache\apache-tomcat-7.0.56" 
    rem setx TOMCAT_HOME "%HOMEDRIVE%\Apache\apache-tomcat-7.0.56" /m 

    rem :: Add TOMCAT to path 
    rem set "path=%PaTH%;%tomcat_home%\bin" 
    rem setx path "%PATH%" /m 

Распакуйте функцию:

:: Unzip file 
:UnZipFile <ExtractTo> <newzipfile> 
set vbs="%temp%\_.vbs" 
if exist %vbs% del /f /q %vbs% 
>%vbs% echo Set fso = CreateObject("Scripting.FileSystemObject") 
>>%vbs% echo If NOT fso.FolderExists(%1) Then 
>>%vbs% echo fso.CreateFolder(%1) 
>>%vbs% echo End If 
>>%vbs% echo set objShell = CreateObject("Shell.Application") 
>>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items 
>>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip) 
>>%vbs% echo Set fso = Nothing 
>>%vbs% echo Set objShell = Nothing 
cscript //nologo %vbs% 
if exist %vbs% del /f /q %vbs% 
goto :eof 

К сожалению, я не являюсь экспертом с помощью пакетных файлов и я имею проблему выяснить, почему это работает для Ant, но не для метода Tomcat.

Line 3 из этого пакетного файла:

:: @Author: Maciej Cygan 
+0

Ошибка из созданного VBScript, а не из командного файла. Как выглядит строка 3 этого файла? –

+0

@AnsgarWiechers Его просто комментарий действительно по обновлению –

+0

Строка 3 сгенерированного VBScript, ** NOT ** командный файл. –

ответ

1

Учитывая ваш:

>>%vbs% echo If NOT fso.FolderExists(%1) Then 
>>%vbs% echo fso.CreateFolder(%1) 
>>%vbs% echo End If 

и это доказательство:

>> p = "N:\ix" 
>> If Not goFS.FolderExists(p) Then 
>> goFS.CreateFolder p 
>> End If 
>> 
Error Number:  76 
Error Description: Path not found 

Я предполагаю, что ваш% 1 аргумент держит путь, не может быть создано, потому что префикс/родительский путь недействителен (здесь нет N: диск). Итак (дважды) проверьте содержимое% 1.

Добавлено вторая мысль:

Как вы сказали:

Now for some reason the UnZip method works perfectly fine for downloading and unziping Ant, but for Tomcat it does not.

и написал:

call :UnZipFile "%HOMEDRIVE\Apache\" "%HOMEDRIVE%\Apache\apache-tomcat-7.0.56.zip" 

Я также предположить, что Отсносящийся правильно HomeDrive - как в

call :UnZipFile "%HOMEDRIVE%\Apache\" "%HOMEDRIVE%\Apache\apache-tomcat-7.0.56.zip" 

(отметьте дополнительно%), решит вашу проблему.

+0

О, боже ... любите их опечатками, в течение нескольких часов играла главную роль в кровавой вещи и не заметила, что –

+0

@MaciejCygan, вам не нужно смотреть на нее часами. Все, что вам нужно сделать, это правильно устранить неполадки. Если вы посмотрите, как ваш скрипт выполняется по строкам, вы бы увидели, что переменная% homedrive% никогда не расширялась до своего значения. У вас даже была пауза в вашем коде сразу после этой строки. Он смотрел прямо на тебя. – Squashman

+0

@Squashman да, но иногда самые простые вещи труднее всего найти # –

Смежные вопросы