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
Это вернется немедленно.