1. 程式人生 > >C#執行bat實現對免安裝MySQL的啟停

C#執行bat實現對免安裝MySQL的啟停

一、bat檔案:

1、修改mysql的my.ini檔案

port=3306
basedir="你的應用安裝路徑/MySQL"
datadir="你的應用安裝路徑/MySQL/data/"
character-set-server=utf8

2、查詢是否有mysql程序在執行,有關閉。安裝自己的服務,並執行服務。

@ echo off
rem 獲取管理員許可權執行bat
echo 正在獲取管理員許可權... 
%1 %2
ver|find "5.">nul&&goto :st
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :st","","runas",1)(window.close)&goto :eof

:st
copy "%~0" "%windir%\system32\"

rem 判斷mysql程序是否在執行
set /a count=0

for /f "tokens=1 delims= " %%i in ('tasklist /nh ^| find /i "mysqld"') do (set /a count+=1)

rem 轉到mysql安裝目錄bin下
cd /d %~dp0

rem 程序存在則關閉,再安裝自己的mysql服務並執行
if %count% neq 0 (

  
  taskkill /F /IM mysqld.exe /T
  mysqld --install "cdjhMySQL"
  
  net start "cdjhMySQL"
  
  
  exit
  
  )


rem 沒有mysql程序執行,則安裝服務並啟動
if %count% equ 0 (

  
  mysqld --install "cdjhMySQL"
  net start "cdjhMySQL"
  
  exit  
)
 

3、退出應用時,關閉服務,移除安裝的服務。

@ echo off
echo 獲取管理員許可權... 
%1 %2
ver|find "5.">nul&&goto :st
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :st","","runas",1)(window.close)&goto :eof

:st
copy "%~0" "%windir%\system32\"

rem 停止MySQL服務並移除服務
net stop "cdjhMySQL"
cd /d %~dp0


mysqld --remove "cdjhMySQL"
echo 服務已移除

4、備份mysql資料庫

echo 開始備份...
cd /d %1 %2 %3    

mysqldump  %4 %5 %6> %7
 

5、恢復mysql資料庫

echo 開始恢復...
cd /d %1 %2 %3    

mysql %4 %5 %6< %7

二、 C#程式碼

備份部分程式碼,主要就是值參並執行bat檔案。

          /**

            rem bat檔案內容
            echo.正在執行備份...
            cd / d % 1
            mysqldump % 2 % 3 % 4 > % 5\home.dump

            pause
            **/
            if (Directory.Exists(tb_FolderPath.Text.Trim())) { 
            Process p = new Process();
            ProcessStartInfo pi = new ProcessStartInfo(path, args);//第二個引數為傳入的引數,string型別以空格分隔各個引數
            pi.UseShellExecute = false;
            pi.RedirectStandardOutput = true;//為true
            pi.RedirectStandardError = true;
            //pi.Arguments = "-uroot -proot nersinghome";   //傳參的另一種形式
            pi.CreateNoWindow = false;//不建立視窗   
            p.StartInfo = pi;
            p.Start();
            p.WaitForExit();
             string output = p.StandardOutput.ReadToEnd();//回撥