也谈关于绿色版my.ini相对路径设置的问题

网络科技 2010-11-23 06:51:44
就是关于basedir与datadir设置为相对路径,网上找了下,都说是不能设置为相对路径的。
那直接不能设置,那就只能间接的去设置的了。
我的想法是用批处理去改basedir和datadir的值,理论上应该是可行吧?
在my.ini中,我们先把值设置如下唯一的标记,如:
basedir=basedirDir
datadir=datadirDir

若是用程序的方法,很容易就可以把basedirDir和datadirDir改为需要的值,但我若想用批处理来解决,该如何写呢?
这里有高人做过吗?希望能指点一二,多谢。

我的思路如下,只是对dos命令不是很熟,具体不知道怎么写。
在my.ini的同级目录,新建个bat文件,如:modifyMyINIDir.bat
内容大致是这样的:
1.读取my.ini的内容放在一个临时的变量中,如tmpINI
2.获取当前的路径,可用:set CURRENT_DIR=%cd%
3.类似实现:tmpINI = tmpINI.replace("basedirDir", CURRENT_DIR)
和tmpINI = tmpINI.replace("datadirDir", CURRENT_DIR + "/data")的方法
4.最后再把得到新的tmpINI写入my.ini中,即替换旧的内容,即大功靠成。

其实思路应该不难,只是具体怎么写呢?还有就是,dos命令,能完成这样复杂的功能不?
有兴趣的同学,可以发挥下吧。
...全文
815 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
iihero_ 2010-11-24
  • 打赏
  • 举报
回复
晕,直接写个distrib.bat <target_dir>即可
target_dir为你要发布的目录。
在bat里头,使用echo命令生成一个新的可用的my.ini文件,到target_dir\bin里头
最末尾,生成一个manual方式启动的mysql服务即可。

zuoxingyu 2010-11-24
  • 打赏
  • 举报
回复
我在发布数据库的时候,配置文件里的文件路径直接写死,比如D:\MYSQL

强制安装到D盘下。
也碰到用户连D盘都没有了,那么再修改MY.INI。
WWWWA 2010-11-24
  • 打赏
  • 举报
回复
这类操作一般是在语言中完成的
网络科技 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 acmain_chm 的回复:]
如果你不是替换原来的my.ini 而是想生成一个事先确定好格式的my.ini 则可以用BAT直接实现。


BatchFile code
echo [mysqld] > c:\test\mysql\my.ini
echo port = 3306 >> c:\test\mysql\my.ini
ehco max_allowed_packet = 1M >> c:\test……
[/Quote]

这种方式确实可行啊,没想到批处理还可以这样用,呵,要学了一手。
好了,感谢各位参与,结了!
dingyanwei 2010-11-24
  • 打赏
  • 举报
回复
就是个ini文件,修改ini文件还是很容易的,几乎所有打包软件都可以修改ini文件啊。
我就是直接在打包软件中设置路径的,所以你爱装哪就装哪。
loveflea 2010-11-24
  • 打赏
  • 举报
回复
参考一下楼上 iihero 的批处理
http://blog.csdn.net/iihero/archive/2010/05/15/5596401.aspx
ACMAIN_CHM 2010-11-24
  • 打赏
  • 举报
回复
如果你不是替换原来的my.ini 而是想生成一个事先确定好格式的my.ini 则可以用BAT直接实现。

[code=BatchFile]echo [mysqld] > c:\test\mysql\my.ini
echo port = 3306 >> c:\test\mysql\my.ini
ehco max_allowed_packet = 1M >> c:\test\mysql\my.ini
echo datadir = %CURRENT_DIR% >> c:\test\mysql\my.ini
....
[/code]
网络科技 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 iihero 的回复:]
晕,直接写个distrib.bat <target_dir>即可
target_dir为你要发布的目录。
在bat里头,使用echo命令生成一个新的可用的my.ini文件,到target_dir\bin里头
最末尾,生成一个manual方式启动的mysql服务即可。
[/Quote]
那distrib.bat具体怎么写呢?
ACMAIN_CHM 2010-11-23
  • 打赏
  • 举报
回复
WINDOWS命令行(也就是你所说的DOS中) 无法实现REPALCE这个功能。
但是如果是在WINDOWS中,你可以通过VBS脚本来实现对文件的操作。

56,681

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧