Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Цикл "пока существует файл" (http://forum.oszone.net/showthread.php?t=325095)

Steklopaket 21-03-2017 17:03 2721766

Цикл "пока существует файл"
 
Всем здравствуйте.
Имеется простенький вопрос, на решение которого у меня не хватает знаний. Имеется такой код:
Код:

if exist file.exe (
        start "" "Unlocker.exe" file.exe /s
        ren file.exe file.lib
)

Т.е. если существует файл, выполняются 2 строчки кода. А как сделать пока существует файл, выполняются 2 строчки кода?

Iska 21-03-2017 17:18 2721776

Steklopaket, так его после ren уже не существует. В чём смысл?

Steklopaket 21-03-2017 17:39 2721784

Iska
Просто файл может использоваться, Unlocker его разблокировывает, но т.к. эффект срабатывает не сразу, то файл по прежнему недоступен для переименования: "Процесс не может получить доступ к файлу, так как этот файл занят другим процессом". Поэтому переименование надо повторять (на всякий случай вместе с разблокированием).

Iska 21-03-2017 17:55 2721792

Цитата:

Цитата Steklopaket
Unlocker его разблокировывает, но т.к. эффект срабатывает не сразу, »

Естественно. Вы ведь отдаёте команду на запуск Unlocker'а и тут же сразу пытаетесь переименовать файл.

Попробуйте либо просто:
Код:

"Unlocker.exe" file.exe /s
либо:
Код:

start "" /wait "Unlocker.exe" file.exe /s

greg zakharov 21-03-2017 18:13 2721796

Цитата:

Цитата Iska
В чём смысл?

Смысл таков, что без бутылки не разобраться, ибо если файл исполняемый и, следовательно, иницирует некий процесс, зачем его насиловать лапать анлокером?! Steklopaket, ну прибъет анлокер некоторые хэндлы, а дальше что?! Если нужно просто наблюдать за файлом, не проще ли взять PowerShell и обратиться к FileSystemWatcher?

Steklopaket 21-03-2017 19:32 2721813

Цитата:

Цитата Iska
start "" /wait "Unlocker.exe" file.exe /s »

Спасибо! Это решение лучше чем то, что я хотел!


Время: 22:40.

Время: 22:40.
© OSzone.net 2001-