就是关于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命令,能完成这样复杂的功能不?
有兴趣的同学,可以发挥下吧。

解决方案 »

  1.   

    WINDOWS命令行(也就是你所说的DOS中) 无法实现REPALCE这个功能。
    但是如果是在WINDOWS中,你可以通过VBS脚本来实现对文件的操作。 
      

  2.   

    我在发布数据库的时候,配置文件里的文件路径直接写死,比如D:\MYSQL强制安装到D盘下。
    也碰到用户连D盘都没有了,那么再修改MY.INI。
      

  3.   

    晕,直接写个distrib.bat <target_dir>即可
    target_dir为你要发布的目录。
    在bat里头,使用echo命令生成一个新的可用的my.ini文件,到target_dir\bin里头
    最末尾,生成一个manual方式启动的mysql服务即可。
      

  4.   

    那distrib.bat具体怎么写呢?
      

  5.   

    如果你不是替换原来的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]
      

  6.   

    参考一下楼上 iihero 的批处理
    http://blog.csdn.net/iihero/archive/2010/05/15/5596401.aspx
      

  7.   

    就是个ini文件,修改ini文件还是很容易的,几乎所有打包软件都可以修改ini文件啊。
    我就是直接在打包软件中设置路径的,所以你爱装哪就装哪。