Taskkill внутри сценария TCL (с использованием foreach) не работает

Мне нужно просмотреть URL с помощью Internet Explorer и закрыть с помощью taskkill через скрипт TCL. Я использую следующий скрипт TCL для этого.

Мой скрипт TCL:

set data [open input_url.txt r]
set test [read $data]
foreach url $test {
    exec "C:/Program Files/Internet Explorer/IEXPLORE.EXE" $url
    after 2000
    exec "C:/WINDOWS/System32/taskkill.exe" /IM IEXPLORE.EXE /F
}

input_url.txt содержание:

clickshare upload.com upload.to 10upload.com 123upload.pl 139pan.com 163pan.com

Но когда я запускаю этот скрипт, открывается браузер с первым URL. Но ничего не происходит после этого. Через 2-3 минуты, если я закрываю браузер вручную, я вижу следующую ошибку:

C:\Users\kumar\Desktop\test>tclsh stack_question.tcl
child process exited abnormally
while executing
"exec "C:/Program Files/Internet Explorer/IEXPLORE.EXE" $url"
    ("foreach" body line 2)
    invoked from within
"foreach url $test {
    exec "C:/Program Files/Internet Explorer/IEXPLORE.EXE" $url
        after 2000
   exec "C:/WINDOWS/System32/taskkill.exe" /IM IEXPLO..."
    (file "stack_question.tcl" line 3)
   C:\Users\kumar\Desktop\test>

Я могу убить сеанс браузера вручную, используя taskkill.exe, как показано ниже:

C:\Users\kumar\Desktop\test>tclsh
% exec "C:/WINDOWS/System32/taskkill.exe" /IM IEXPLORE.EXE /F
SUCCESS: The process "iexplore.exe" with PID 3948 has been terminated.
SUCCESS: The process "iexplore.exe" with PID 3744 has been terminated.
%

Может ли кто-нибудь помочь мне решить эту проблему?

Заранее спасибо.

1 ответ

Решение

Это похоже на exec ждет iexplore.exe закончить, прежде чем продолжить выполнение. Для того, чтобы разрешить немедленное возвратное использование start команда:

exec cmd.exe /c start iexplore.exe $url

Это вернется немедленно.

Другие вопросы по тегам