ファイルをダウンロードしようとする前にファイルシステムに特定のディレクトリが存在するかどうかを判断しようとしています。バッチファイル - 存在しない場合は動作しません。
バッチファイル:
:: Create Apache Directory if does not exist
mkdir "%HOMEDRIVE%\Apache" 2> nul
:: Setup Apache Ant if Ant does not exist
if not exist "%HOMEDRIVE%\Apache\apache-ant-1.9.7\" (
:: 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-Ant
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-Ant
call :UnZipFile "%HOMEDRIVE%\Apache\" "%HOMEDRIVE%\Apache\apache-ant-1.9.7-bin.zip"
: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%
:: Delete zip folder
del "%HOMEDRIVE%\Apache\apache-ant-1.9.7-bin.zip"
:: Set ANT_HOME path
setx ANT_HOME "%HOMEDRIVE%\Apache\apache-ant-1.9.7" /m
:: Add ANT to path
setx path "%PATH%;%HOMEDRIVE%\Apache\apache-ant-1.9.7\bin" /m
)
更新日:私は@aschipfl提案
ディレクトリCを追加しました:/Apache/apache-ant-1.9.7ので、コードが実行時に失敗するべきであるが存在しますそれでもファイルをダウンロードし、そこにさらに設定を試みます。どんな考えが間違っていて、if文が実行されるべきでないところで実行されるのはなぜですか?
「IF」コマンドがどのように間違っているかはわかりませんが、コードに別の問題があります。コードブロック内に変数を設定していますが、次のコード行でその変数を使用するために遅延拡張を使用していません。 – Squashman
@Squashmanは睡眠を増やすことは問題ではありませんが、ブロックはなぜ実行してはいけないのですか? hmm –
あなたは何について話していますか?睡眠は私のコメントとは関係ありません。私は%filename%変数について話しています。コードブロック内にあり、変数を設定し、その変数をそのコードブロック内で使用する必要がある場合は、遅延拡張を使用する必要があります。 – Squashman