我正在编写一个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命令错误。我假设这与我如何执行系统调用有关。
答案 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
这看起来不对。