2015-09-02 3 views
0

Имейте небольшой скрипт bash, который я хотел бы поместить в метод в ruby, содержимое скрипта выглядит следующим образом.Выполнять несколько команд командной строки командной строки в 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 - (( Эта часть в сценарии Баш это то, что я пишу некоторое содержимое в файл.

Просто хочу выполнить этот метод и заставить его работать, как если бы я написал тот же контент в файле bat, он работает абсолютно нормально.

ответ

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}` 
+0

Спасибо за помощь. Логика выглядит обрядом, и я могу понять, где я ошибся. Но я не могу заставить этот скрипт работать. Когда я выполняю последнюю строку, логика все еще не работает. – Supersonic

+0

В основном это создает vb scipt для создания значка ярлыка в папке избранных. Если я вставляю это в bat-файл, он работает. Но не тогда, когда я запускаю его, как то, как вы дали его выше. Не могли бы вы помочь мне? – Supersonic

+1

Извините, я ничего не знаю о ОС Windows. – mudasobwa

Смежные вопросы