Показать полную графическую версию : [решено] Скрипт для удаления файлов и папок
Собрал из кусков скрипт для удаления файлов и папок.
Но проблема такая, если все указанные в скрипте файлы присутствуют в системе то он отрабатывает нормально.
А если какого нибудь файла или папки нет, то скрипт выдаёт ошибку: файл не найден и окно висит пока не закроешь вручную.
Помогите подправить или написать новый, чтобы не было такой ошибки.
Вот мой скрипт:
' Задержка 1 секунда
WScript.Sleep 1*1000
' Удаление файла
WScript.CreateObject("Scripting.FileSystemObject").DeleteFile "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\service_update.exe", True
WScript.CreateObject("Scripting.FileSystemObject").DeleteFile "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\yupdate-exec.exe", True
' Задержка 1 секунда
WScript.Sleep 1*1000
' Удаление папки
WScript.CreateObject("Scripting.FileSystemObject").DeleteFolder "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\Installer", True
А если поможете написать скрипт или .cmd, чтобы сперва отработал инсталлятор браузера setup.exe, затем ещё один .exe (он просто заменяет файлы в папке с настройками) и затем удалились бы нужные папки и файлы,
то я бы был безмерно вам благодарен.
BKPB,
start "" /wait "C:\Program Files\setup.exe"
start "" /wait "C:\Program Files\еще один.exe"
del /f /q "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\yupdate-exec.exe" "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\yupdate-exec.exe"
rd /s /q "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\Installer"
megaloman
03-02-2018, 19:22
А если какого нибудь файла или папки нет, то скрипт выдаёт ошибку »Если в Вашем скрипте первой строкой поставить On Error Resume Next то скрипт не выдаст ошибку.
Казбек,
Забыл указать, что .exe , будут запускаться из папки Temp.
Сделал так, но не сработало.
start "" /wait "\%Temp%\Setup.exe"
start "" /wait "\%Temp%\Settings.exe"
Выдаёт ошибку:
Не удается найти "\C:\Users\A47D~l\AppData\Local\Temp\Setup.exe". Проверьте, правильно ли указано имя и повторите попытку.
Поправьте пожалуйста, как правильно сделать.
BKPB,
Слэш перед Temp лишний.
start "" /wait "%Temp%\Setup.exe"
Казбек,
Тоже не сработало: Не удается найти "Temp\Setup.exe". Проверьте, правильно ли указано имя и повторите попытку.
Тоже не сработало: Не удается найти "Temp\Setup.exe". Проверьте, правильно ли указано имя и повторите попытку. »
Покажите скрин вместе с командой.
Или укажите сразу полный путь:
start "" /wait "C:\Users\A47D~l\AppData\Local\Temp\Setup.exe"
megaloman
03-02-2018, 20:47
BKPB, что такое Temp? Если это переменная окружения, то я бы предложилPushd "%Temp%"
start " " /wait Setup.exe
PopdВ противном случае указать для Pushd полный правильный путь
Pushd "C:\Users\.........\Temp"
По видимому, Pushd надо сделать обязательно, возможно exe ищет рядом в папке нужные фаилы и папки.
Казбек,
http://imageban.ru/show/2018/02/03/d392284ebc8678cd0e9773777c856090/png
megaloman
03-02-2018, 21:03
BKPB, у вас на скриншоте текущая папка "C:\Users\.........\Temp" и вы зачем-то делаете Temp\setup.exe. Имхо, Temp\ здесь ошибочен и не нужен.
Казбек,
Если запускать из папки TEMP (переменная окружения), то срабатывает.
Но дело в том, что при распаковке моего инсталлятора SFX, запуск происходит не из самой папки TEMP,
а из C:\Users\Администратор ПК\AppData\Local\Temp\RarSFX0 и эта папка RarSFX0 всегда имеет разное имя,
то RarSFX0, то RarSFX1. И поэтому сценарий не срабатывает: Невозможно найти файлы Setup.exe и Settings.exe.
Pushd "%Temp%"
start " " /wait Setup.exe
Popd
ping -n 3 localhost>Nul
Pushd "%Temp%"
start " " /wait Settings.exe
Popd
del /f /q "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\yupdate-exec.exe" "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\service_update.exe"
rd /s /q "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\Installer"
start " " /wait Setup.exe »
start " " /wait "%~dp0Setup.exe" (и далее аналогично) тоже не срабатывает?
BKPB,
Расскажите нам на словах, что вы хотите сделать. Без кода. И конечную цель этих действий.
запуск происходит не из самой папки TEMP,
а из C:\Users\Администратор ПК\AppData\Local\Temp\RarSFX0 и эта папка RarSFX0 всегда имеет разное имя,
то RarSFX0, то RarSFX1. И поэтому сценарий не срабатывает: Невозможно найти файлы Setup.exe и Settings.exe. »
Мне кажется, это вполне логично. Тогда зачем вы подставляете тот путь, по которому нет ваших исполняемых файлов....
На том скрине, что вы предоставили выше, вы выполнили:
start "" /wait "Temp\Setup.exe"
Вместо моего варианта:
start "" /wait "%Temp%\Setup.exe"
mwz,
Спасибо, так срабатывает, но теперь не удаляются папки:
Pushd "%Temp%"
start " " /wait "%~dp0Setup.exe"
Popd
Pushd "%Temp%"
start " " /wait "%~dp0Settings.exe"
Popd
del /f /q "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\yupdate-exec.exe" "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\service_update.exe"
rd /s /q "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\Installer"
megaloman
03-02-2018, 21:53
@Echo Off
Set "BoxIn=Z:\Users\Администратор ПК\AppData\Local\Temp\RarSFX*"
FOR /D %%d IN ("%BoxIn%") DO If Exist "%%d\Setup.exe" (Pushd "%%d" &Start " " /wait "Setup.exe")
FOR /D %%d IN ("%BoxIn%") DO If Exist "%%d\Settings.exe" (Pushd "%%d" &Start " " /wait "Settings.exe")
Popd
megaloman
03-02-2018, 22:04
У меня получилось 3 файла: browser.7z, Setup.exe, Settings.exe. » Где они получились? Где они находятся? Укажите полный путь. Setup.exe, Settings.exe - это исполнимые файлы или самораспаковывающиеся архивы? Куда?Pushd "%Temp%"
start " " /wait "%~dp0Setup.exe"
Popd
Pushd "%Temp%"
start " " /wait "%~dp0Settings.exe"
Popd » ИМХО, это неправильно. Если Setup.exe и Settings.exe находятся рядом с Вашим батником, то Pushd "%~dp0"
start " " /wait "Setup.exe"
start " " /wait "Settings.exe"
PopdBKPB, Разберитесь с путями. Батник запускается из любого места? Какой полный путь к Setup.exe, Settings.exe? не стали удалятся файлы и папка » А они там есть? А батник сохраняли в 866 кодировке? То, что Вы показываете, содержит русские буквы. Поэтому это очень важно.
Я хочу создать инсталлятор Яндекс браузера без голосового помощника Алиса и с моими готовыми настройками, а также удалить не нужную после установки папку Installer и файлы yupdate-exec.exe и service_update.exe отвечающие за автоматическое обновление браузера.
У меня есть 3 файла: browser.7z, Setup.exe, Settings.exe. Которые я запаковываю в SFX WinRar.
Setup.exe - исполняемый файл (оригинальный - установка браузера)
Settings.exe - самораспаковывающиеся архив в котором находится папка Default c готовыми настройками браузера
(после установки браузера она заменяет папку по умолчанию Default (C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\User Data\Default).
Мне нужно, чтобы файлы распаковались в папку %TEMP% и запустилась установка, а по окончании установки браузера, пака с настройками заменила такую же папку по умолчанию
и удалились ненужные файлы service_update.exe service_update.exe и ненужная после установки папка Installer.
Вот мой файл .cmd:
Pushd "%Temp%"
start " " /wait "%~dp0Setup.exe"
start " " /wait "%~dp0Settings.exe"
Popd
ping -n 6 localhost>Nul
del "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\yupdate-exec.exe"
del "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\service_update.exe"
rd /s /q "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\Installer"
Установка проходит нормально, но файлы service_update.exe service_update.exe и ненужная после установки папка Installer не удаляются.
Часть причины, я так думаю из за того что происходит запуск браузера после отработки инсталлятора, хотя даже после того как я его закрою и запущу
del "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\yupdate-exec.exe"
del "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\service_update.exe"
rd /s /q "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\Installer"
Файлы и папка всё равно остаются на месте.
megaloman,
Вот батник который работает из папки (RarSFX0 или RarSFX1 - всегда разные) создаваемой SFX WinRar инсталлятором в папке ТЕМР
С:\Users\Администратор ПК\AppData\Local\Temp\RarSFX*
за исключением, что не удаляются файлы и папка
Pushd "%Temp%"
start " " /wait "%~dp0Setup.exe"
start " " /wait "%~dp0Settings.exe"
Popd
ping -n 6 localhost>Nul
del "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\yupdate-exec.exe"
del "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\service_update.exe"
rd /s /q "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\Installer"
Вы говорите, что они не удаляются из за руских букв в пути, но до этого они именно по этим путям и удалялись.
Просто я мучаюсь уже 5 часов и голова уже ватная, поэтому не пойму почему раньше в других батниках они удалялись а сейчас нет.
megaloman,
Если вы считаете, что так лучше сделаю так,
Pushd "%~dp0"
start " " /wait "Setup.exe"
start " " /wait "Settings.exe"
Popd
Просто я в этом ничего не понимаю поэтому и поросил помочь.
Если делать удаление через скрипт, во так:
' Задержка 1 секунда
WScript.Sleep 1*1000
' Удаление файла
WScript.CreateObject("Scripting.FileSystemObject").DeleteFile "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\service_update.exe", True
WScript.CreateObject("Scripting.FileSystemObject").DeleteFile "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\yupdate-exec.exe", True
' Задержка 1 секунда
WScript.Sleep 1*1000
' Удаление папки
WScript.CreateObject("Scripting.FileSystemObject").DeleteFolder "C:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\Installer", True
тогда все удаления отрабатывают отлично.
megaloman
03-02-2018, 23:38
А батник сохраняли в 866 кодировке? То, что Вы показываете, содержит русские буквы. Поэтому это очень важно. » VBS надо сохранять в 1251 кодировке. Если он работает, то так оно и есть. CMD должен работать с 866 кодировкой. Я приложил вариант батника в нужной кодировке. Переименуйте его.
В файле забыл убратьFOR /D %%d IN ("%BoxIn%") DO If Exist "%%d\Setup.exe" (Pushd "%%d" &Echo Start " " /wait "Setup.exe")
FOR /D %%d IN ("%BoxIn%") DO If Exist "%%d\Settings.exe" (Pushd "%%d" &Echo Start " " /wait "Settings.exe")
Подкорректируйте, пожалуйста.
@Echo Off
chcp 1251 >nul
Set "BoxIn=Z:\Users\Администратор ПК\AppData\Local\Temp\RarSFX*"
FOR /D %%d IN ("%BoxIn%") DO If Exist "%%d\Setup.exe" (Pushd "%%d" &Start " " /wait "Setup.exe")
FOR /D %%d IN ("%BoxIn%") DO If Exist "%%d\Settings.exe" (Pushd "%%d" &Start " " /wait "Settings.exe")
Del /F /Q "Z:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\service_update.exe"
Del /F /Q "Z:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\yupdate-exec.exe"
Rd /S /Q "Z:\Users\Администратор ПК\AppData\Local\Yandex\YandexBrowser\Application\17.11.1.990\Installer"
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.