使用变量进行系统调用

时间:2012-11-13 06:16:35

标签: ruby windows backup

我正在编写一个ruby脚本,可以自动将笔记本电脑备份到我的ssh服务器。我似乎陷入了系统调用。

$x = "C:\\Program Files\\7-Zip\\7z.exe"

###calibre library###
$library = "C:\\Users\\maste_000\\Documents\\Calibre Library"
system($x, "a library.7z", $library, " -r")

我正在尝试调用exe 7z并从$ library指向的目录创建一个名为library.7z的文件。无论我如何安排这个,但我不断收到7z命令错误。我假设这与我如何执行系统调用有关。

1 个答案:

答案 0 :(得分:2)

我猜你想要这个:

system($x, 'a', 'library.7z', $library, '-r')

这将在命令提示符下提供与此相同的效果:

C:\Program Files\7-Zip\7z.exe a library.7z "C:\Users\maste_000\Documents\Calibre Library" -r

当然,假设我还没有完全忘记引用如何与Windows命令行一起使用。

当您使用system的多参数形式时,$library中的空格无关紧要;使用此版本system的部分原因是为了避免在shell阻塞时所需的所有奇怪的引用。主要的是你可能需要将'a''library.7z'分开,这样它们就是两个参数,而不是一个以空格作为第二个字符的参数;如果没有那种分离,你就会这样说:

C:\Program Files\7-Zip\7z.exe "a library.7z" "C:\Users\maste_000\Documents\Calibre Library" -r

这看起来不对。