如何找到'runas'执行完成?

时间:2012-10-15 03:17:40

标签: ruby windows windows-7 cmd runas

我在Windows7上使用ruby 1.9.3p194 (2012-04-20) [i386-mingw32]。最近我从Windows XP升级,我没有以管理员身份运行命令,所以我没有遇到这样的问题。

要进行mySQL备份,我运行runas /savecred /user:yogurt\administrator "cmd.exe /k mysqldump --user=#{dbuser} --password=#{dbpassword} #{dbname} > #{dump}" - 必须以管理员身份执行mysqldump。我不在管理员帐户下运行我的ruby脚本。

runas启动新的cmd.exe,ruby不会等待它完成。转储过程大约需要一分钟才能完成。之后我压缩转储文件并删除它。

但是在我对该文件执行任何其他操作之前,我必须确保转储过程已经完成。现在我使用sleep(60),但我想知道是否有更好的更系统的解决方案。

更新 - ruby​​代码

dump="c:\\dbdump.sql"
cmd="runas /savecred /user:yogurt\\administrator \"cmd.exe /c mysqldump --user=root --password=password tafdb413 > #{dump}\""
output = %x[#{cmd} 2>&1]
puts "flow continues even though dump hasn't finished yet :-("
      sleep(130)  
cmd="runas /savecred /user:yogurt\\administrator \"cmd.exe /c del #{dump}\""
output = %x[#{cmd} 2>&1]

UPDATE2

我想我可以在转储完成后创建一个文件,作为cmd.exe中的第二个命令。 ruby将每隔一秒左右检查文件是否存在。

0 个答案:

没有答案