0

我正在编写一个 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 命令错误。我假设这与我执行系统调用的方式有关。

4

1 回答 1

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 命令行一起工作的。

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

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

这看起来不对。

于 2012-11-13T06:27:19.013 回答