일부 웹 개발을 자동화하는 Bat 파일

일부 웹 개발을 자동화하는 Bat 파일

Windows 환경에서 가상호스트를 생성하는 것은 번거로운 작업입니다. 사이트 폴더를 만들고 httpd.conf, 호스트 및 기타 내용을 편집해야 합니다. 그 중 일부를 자동화하기 위해 배치 파일을 만들어 그 중 일부를 자동화하기로 결정했습니다. 우선 제가 생각해낸 내용은 다음과 같습니다.

@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

관련 정보