使用需求
因为我的工作需要,我总是需要更换网站根目录,来调试不同的网站。我本机的环境是xampp,更换apache根目录这件事需要更改httpd.conf文件。每次都要打开再改,嫌麻烦,想找一个尽量简便的方法。由此写了这个批处理,希望实现直接输入路径,自动更改文件。
这里要提示一下,我的XAMPP安装在D:\xampp\,我的网站根目录想安排在F:\www\下的子文件夹中切换。
比如有时候是F:\www\aaa\,有时候是 F:\www\bbb\
这里说的是本机调试,而非服务器生产环境,本文只适于windows。
解决方法
由于我并没有研究批处理中的正则替换,所以稍微绕一下。
1. 找到httpd.conf文件位置,并重命名为httpd.conf.txt,并记录路径。
如:我的xampp中httpd.conf文件位置在:
D:\xampp\apache\conf\httpd.conf
那么我就复制一下,再后面加个txt,记录一下路径,即:
D:\xampp\apache\conf\httpd.conf.txt
2. 编辑httpd.conf.txt,找到DocumentRoot位置的两行,改为实际路径名为:wwwdir
如:我的httpd.conf.txt文件中,原来的内容是:
# …………
#
DocumentRoot "/xampp/htdocs"
<Directory "/xampp/htdocs">
#
# …………
改为
# …………
#
DocumentRoot "F:/www/wwwdir"
<Directory "F:/www/wwwdir">
#
# …………
3. 新建文本文件,复制以下代码,改拓展名为.bat
@echo off :: 设置httpd.conf文件路径,如 D:\xampp\apache\conf\ :: 切记末尾必须由\结束 set confdir=D:\xampp\apache\conf\ :: 设置示例文件路径,如 D:\xampp\apache\conf\httpd.conf.txt set examplefile=D:\xampp\apache\conf\httpd.conf.txt :: :: 以下内容不需更改 setlocal Enabledelayedexpansion mode con cols=45 lines=3 color 0C set /p inputdir=Project Floder Name : del /f /s /q "%confdir%httpd.conf" for /f "tokens=*" %%a in (%examplefile%) do ( set var=%%a set var=!var:wwwdir=%inputdir%! echo !var!>>"%confdir%httpd.conf" ) endlocal
4. 最后配置一下就可以了,已经在代码里写了,配置两个位置confdir和examplefile
预览
双击运行后,可见以下界面:

输入要更改的文件夹名,回车以后即完成修改,不做任何提示。