- PR -

コマンドプロンプトから実行

1
投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-05-03 13:08
こんにちは。

MySQL5のバックアップをVB6のアプリ上から行いたいのですが、
実行エラーになります。
VB6から実行される時の半角スペースがchar(34)に変換してもうまくできませんでした。

手動でDOSから
"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump.exe" -u root -p --databases testdb > C:\bak\20081010_101010.dmp
はパスワードを要求されますが、成功しました。

VB6ではこんな漢字のソースです。
Private Const BAK_CMD1 = "command.com /c"
Private Const BAK_CMD2 = """" & "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump.exe" & """"
Private Const BAK_CMD3 = " -u root -p --databases testdb > "

Dim bakf as String

bakf = """" & "C:\bak\20081010_101010.dmp" & """"

Shell BAK_CMD1 & BAK_CMD2 & BAK_CMD3 & bakf, 1

で実行しました。

何が悪いのでしょうか?
また、mysqldump.exeが要求するパスワードをVB6内で実行させるすべはないのでしょうか?

よろしくお願いします。
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-05-03 13:34
/で表示されてますが、エンマークです。
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-05-03 20:48
こんにちは。

一応、実行まではできました。cmd.exe /kとして実行して、DOS窓を開くように変えました。なぜか、バックアップファイル指定がまずかったようで、ダブルクオーテーションくくりをはずした所、うまくいきました。

半角スペースの文字列を含んだパスでも含まないパスでも同じでした・・。??

ただ、実際にやりたい事はDOS窓を開かないまま、バックアップ処理をしたいのですが、
これはむりなのでしょうか?
パスワード要求はmysql.exe,mysqldump.exeのプログラムの要求後の感じもしますし・・。

ん〜・・。
よろしくお願いします。
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-05-08 20:44
度々、失礼します。

今、こんな感じでコマンドプロンプトで実行できてますが
cmd = "cmd.exe /k " & Chr(34) & "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump.exe" & Chr(34) & " -u root -p --databases testdb > " & "C:\bak\bak_1.dmp"
Ret1 = Shell(cmd, 1)
@↑

Amysqlpassword(改行)
Bexit(改行)

と同時に行いたいのですが、何か方法はないでしょうか?
自分で@〜Bをプロンプトに貼り付けた場合、実行できるので可能だと思うのですが、
VBからの改行コードが読み取れないようです(batファイルはなるべくやりたくないです)。

Debug.printでは改行されているんですが、起動されたDOS窓を見る限り、改行を読み取ってくれません。

Chrでもvbcrlfでもだめでした。

よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)