有一个小的bash脚本我想将它放入ruby中的方法脚本内容如下。
def test_method
`@echo off`
`SETLOCAL ENABLEDELAYEDEXPANSION`
`SET LinkName=Projects`
`SET Esc_LinkDest=%userprofile%\Links\!LinkName!.lnk`
`SET Esc_LinkTarget=C:\Projects`
`SET cSctVBS=CreateShortcut.vbs`
`SET LOG=".\%~N0_runtime.log"`
`((`
`echo Set oWS = WScript.CreateObject^("WScript.Shell"^)`
`echo sLinkFile = oWS.ExpandEnvironmentStrings^("!Esc_LinkDest!"^)`
`echo Set oLink = oWS.CreateShortcut^(sLinkFile^)`
`echo oLink.TargetPath = oWS.ExpandEnvironmentStrings^("!Esc_LinkTarget!"^)`
`echo oLink.Save`
`)1>!cSctVBS!`
`cscript //nologo .\!cSctVBS!`
`DEL !cSctVBS! /f /q`
`)1>>!LOG! 2>>&1`
end
执行到((
,即第8行,并给出错误No such file or directory - ((
bash脚本中的那部分是我正在为文件写一些内容的东西。
只是想执行该方法并使其工作就像我在bat文件中编写相同的内容一样,它工作得非常好。
答案 0 :(得分:2)
您正在尝试执行脚本的每一行,这是错误的。只需准备好你的脚本,然后一次性执行它。
cmd = <<EOC
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET LinkName=Projects
SET Esc_LinkDest=%userprofile%\Links\!LinkName!.lnk
SET Esc_LinkTarget=C:\Projects
SET cSctVBS=CreateShortcut.vbs
SET LOG=".\%~N0_runtime.log"
((
echo Set oWS = WScript.CreateObject^("WScript.Shell"^)
echo sLinkFile = oWS.ExpandEnvironmentStrings^("!Esc_LinkDest!"^)
echo Set oLink = oWS.CreateShortcut^(sLinkFile^)
echo oLink.TargetPath = oWS.ExpandEnvironmentStrings^("!Esc_LinkTarget!"^)
echo oLink.Save
)1>!cSctVBS!
cscript //nologo .\!cSctVBS!
DEL !cSctVBS! /f /q
)1>>!LOG! 2>>&1
EOC
# OK, time to rock’n’roll!
`#{cmd}`