Файл bat для автоматизации некоторых веб-разработок

Файл bat для автоматизации некоторых веб-разработок

Создание виртуального хоста в среде Windows — это куча хлопот. Вам нужно создать папку сайта, отредактировать httpd.conf, hosts и что-то еще. Чтобы автоматизировать некоторые из этих процессов, я решил попробовать создать пакетный файл для автоматизации некоторых из них. Вот что у меня получилось для начала:

@ECHO OFF

::location of vhosts
SET BASEURL=D:\web\vhosts\

:sitenameprompt
::ask for a sitename
set /p sitename="Enter Sitename: " %=%

echo Before IF
IF EXIST %BASEURL%%sitename% echo The specified site folder already exists! Choose another. 
IF EXIST %BASEURL%%sitename% goto sitenameprompt 

IF NOT EXIST %BASEURL%%sitename% echo Creating folder 
IF NOT EXIST %BASEURL%%sitename% MD %BASEURL%%sitename%

echo Adding virtualhost to httpd.conf
pause
(
echo ###%sitename%###
echo    <VirtualHost *:80>
echo        ServerAdmin admin@%sitename%
echo        DocumentRoot "%BASEURL%%sitename%"
echo        ServerName %sitename%.dev
echo        ServerAlias %sitename%.dev
echo        <Directory "%BASEURL%%sitename%">
echo            Options Indexes FollowSymLinks Includes ExecCGI
echo            Order allow,deny
echo            Allow from all
echo        </Directory>
echo    </VirtualHost>
) >>D:\web\xampp\apache\conf\extra\httpd-vhosts.conf

pause
echo Restarting apache
::httpd -k restart

Теперь при запуске этого скрипта он выдает синтаксическую ошибку в части httpd.conf. Имейте в виду, что я довольно новичок в этом деле, так что это, вероятно, что-то очевидное. Так где же я облажался?

решение1

Некрасивые знаки <>|&необходимо экранировать целиком с помощью каретки ^, попробуйте сделать следующее:

@echo off
(
echo ###%sitename%###
echo    ^<VirtualHost *:80^>
echo        ServerAdmin admin@%sitename%
echo        DocumentRoot "%BASEURL%%sitename%"
echo        ServerName %sitename%.dev
echo        ServerAlias %sitename%.dev
echo        ^<Directory "%BASEURL%%sitename%"^>
echo            Options Indexes FollowSymLinks Includes ExecCGI
echo            Order allow,deny
echo            Allow from all
echo        ^</Directory^>
echo    ^</VirtualHost^>
) >>D:\web\xampp\apache\conf\extra\httpd-vhosts.conf

Связанный контент