新手问题 关于在 Windows 上运行本地命令的问题 - 之二

ask_acct · 2014年02月14日 · 最后由 liudangyi 回复于 2014年02月16日 · 2750 次阅读

麻烦大家帮忙看一个错误,想压缩一个文件夹下的一些文件,可怎么也执行不了:

Dir.glob('F:/data/*.abc').{
    |abc| system ('"C:\\Program Files\\WinRAR\\WinRAR.exe" a abc abc')
}

错误信息 F:\data\abc.rar:无法打开 abc 系统找不到指定的文件

Dir.glob('F:/data/*.abc').{
    |abc| system ('"C:\\Program Files\\WinRAR\\WinRAR.exe" a #{abc} #{abc}')
}

错误信息:F:\data#{abc}.rar:无法打开 #{abc} 系统找不到指定的文件

谢谢大家

updated:重新安装了改成依然不行

Dir.glob('F:/data/*.abc').{
    |abc| system ('D:\\WinRAR\\WinRAR.exe a abc abc')
}

解决了,谢谢

Dir.glob('F:/data/*.abc').{
    |abc| system (%Q|"C:\\Program Files\\WinRAR\\WinRAR.exe" a #{abc}.rar #{abc}|)
}

是不是跟空格有关?

#1 楼 @Rei 哪个空格?我单独运行这步 system ('"C:\Program Files\WinRAR\WinRAR.exe"),打开 WinRAR 没问题

改成用一个双引号括住全部?是不是单引号不转义的原因

#3 楼 @gyorou 之前是因为 WinRAR 路径有空格,重新安装了改成依然不行

Dir.glob('F:/data/*.abc').{
    |abc| system ('D:\\WinRAR\\WinRAR.exe a abc abc')
}
匿名 #5 2014年02月14日

我晕,这错误信息你没读吗? 单引号中的#{abc}不会被替换成变量的值啊

#5 楼 @jex 所以我才尝试了 Dir.glob('F:/data/*.abc').{ |abc| system ('D:\WinRAR\WinRAR.exe a abc abc') } 但是也报一样的错误啊

直接

system ('D:\\WinRAR\\WinRAR.exe a abc abc')

试试

Dir.glob('F:/data/*.abc') .each{
    |abc| system ('D:\\WinRAR\\WinRAR.exe a abc abc')
}
system (%Q|"C:\\Program Files\\WinRAR\\WinRAR.exe" a #{abc} #{abc}|)
Dir.glob('F:/data/*.abc').{
    |abc| system ("C:/Program Files/WinRAR/WinRAR.exe a #{abc} #{abc}")
}

这样呢。|abc|是变量直接在单引号中使用显然会被当然普通字符串

#8 楼 @Rei 感谢,基于您的答案增加个后缀就可以了 system (%Q|"C:\Program Files\WinRAR\WinRAR.exe" a #{abc}.rar #{abc}|),谢谢

#7 楼 @sevk 直接运行没问题

匿名 #12 2014年02月15日

#6 楼 @ask_acct 我晕,将你的代码高亮一下还不看出问题来?

Dir.glob('F:/data/*.abc').{
    |abc| system ('D:\WinRAR\WinRAR.exe a abc abc')
}

abc 是什么?

这缩进,看的心痛啊

需要 登录 后方可回复, 如果你还没有账号请 注册新账号