标题: [文本处理] [已解决]求助替换mysql中my.ini[basedir][datadir]的BAT脚本 [打印本页]
作者: cuteai 时间: 2013-1-18 09:49 标题: [已解决]求助替换mysql中my.ini[basedir][datadir]的BAT脚本
本帖最后由 cuteai 于 2013-1-18 17:23 编辑
LZ需要打包一个WEB应用 需要将一个绿色版的Mysql加进去,
mysql根目录下有一个my.ini的配置文件,[basedir]和[datadir]是配置mysql路径的参数
( basedir = %mysql_dir% datadir = %mysql_dir%/data)
因为不知道用户会安装在哪里,所以考虑通过一个和my.ini同级目录下的BAT脚本来实现修改my.ini中 basedir和datadir
请教各位大大 具体该如何实现
作者: BAT-VBS 时间: 2013-1-18 10:13
请把my.ini压缩一下传上来看看
顺便详细说说修改成什么样子
作者: cuteai 时间: 2013-1-18 10:24
即是把这一段修改
#Path to installation directory. All paths are usually resolved relative to this.
basedir="F:/mysql-5.1.55"
#Path to the database root
datadir="F:/mysql-5.1.55/Data/"
将basedir修改成mysql的安装路径 datadir修改成mysql/data
因为mysql的安装路径是未知的 my.ini是位于mysql的根目录下
我的思路是在my.ini同级目录下 创建一个bat 通过%cd%或者 %~dp0获取路径 替换掉my.ini下的basedir和datadir
因为对bat不是很熟悉 请教大大具体该如何实现
作者: batman 时间: 2013-1-18 12:07
- @echo off&setlocal enabledelayedexpansion
- (for /f "delims=" %%a in ('findstr /n .* my.ini') do (
- set "str=%%a"&set "str=!str:*:=!"
- if defined str (
- if /i "!str:~4,4!" equ "dir=" (
- for /f "delims==" %%b in ("!str!") do set "str=%%b="%%~dp0""
- set "str=!str:\=/!"
- )
- )
- echo,!str!
- ))>$
- move $ my.ini
复制代码
作者: cuteai 时间: 2013-1-18 14:48
回复 4# batman
感谢帮助,但是运行之后的结果是:
#Path to installation directory. All paths are usually resolved relative to this.
basedir="%~dp0"
#Path to the database root
datadir="%~dp0" (此处应更改为%basedir%路径下的data目录)
之前我就试过手动将my.ini文件改成%~dp0但是貌似不能识别,尝试链接mysql数据库时会报1067错误(该类错误已查明原因即为basedir和datadir的路径错误导致)
能否在BAT文件中 set CURRENT_DIR = %cd% 得到一个绝对路径 然后将CURRENT_DIR的值传给my.ini中的basedir, 将CURRENT_DIR/data的值传给datadir
作者: apang 时间: 2013-1-18 15:52
这样呢?- @echo off
- set "pth=%~dp0"
- set "pth=%pth:\=/%"
- set "pth=%pth:~,-1%"
- (for /f "tokens=1,2* delims=:=" %%a in ('findstr /n .* my.ini') do (
- if "%%c" neq "" (
- if /i not "%%b"=="basedir" (
- if /i not "%%b"=="datadir" (echo,%%b=%%c
- ) else echo,%%b="%pth%/Data/"
- ) else echo,%%b="%pth%"
- ) else echo,%%b
- ))>$
- move $ my.ini
复制代码
作者: terse 时间: 2013-1-18 16:19
本帖最后由 terse 于 2013-1-18 16:20 编辑
- @echo off&setlocal ENABLEDELAYEDEXPANSION
- set "basedir="%~DP0""
- set "datadir="%~DP0data/""
- (for /f "tokens=1* delims=:" %%a in ('FINDSTR /n .* "MY.INI"') do (
- for /f "delims== " %%i in ("%%b") do (
- if defined %%i (echo;%%i=!%%i:\=/!)else echo;%%b
- )))>$
- move $ my.ini
- pause
复制代码
作者: cuteai 时间: 2013-1-18 16:42
回复 6# apang
非常感谢 确实可以实现了 帮了我一个大忙
作者: BAT-VBS 时间: 2013-1-18 17:08
问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。
作者: cuteai 时间: 2013-1-18 17:24
好的 已改...
我想给每个来帮的人都加啊。。可惜只有1分
作者: flaven 时间: 2013-2-4 23:27
各位大大能否讲讲复制代码
这两句是啥意思啊
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |