Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Батник дописывает сам себя

Ответить
Настройки темы
CMD/BAT - [решено] Батник дописывает сам себя

Ветеран


Сообщения: 2196
Благодарности: 727


Конфигурация

Профиль | Отправить PM | Цитировать


Заинтересовался вопросом, как сделать так, чтобы батник сам себя проверял и дописывал (стирал) при условии наличия файлов. Как записать переменную исполняемого батника? Типа накидал файлов, запустил скрит. Он сам себя собрал и начал установку.
Код: Выделить весь код
Set Cnt=0
For %%I In (*.msp) Do (
echo %%I
Set /A Cnt += 1
> txt.txt start /wait msiexec /update %%I /qb-^^!
> txt.txt Set /a cntA += 1
> txt.txt ECHO Установка обновления !cntA! завершена
)
Echo Количество обновлений - %Cnt%
pause

Отправлено: 19:47, 15-05-2011

 

Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата sov44:
сам себя проверял и дописывал (стирал) »
Сам себя он дописать не сможет, т.к., он при выполнении будет занят системой. Но он может создать второй батник и в конце запустить его (второй батник) из первого.
Стереть сам себя может, добавьте в самый конец батника:
Код: Выделить весь код
Del "%~0"

Последний раз редактировалось gora, 15-05-2011 в 20:14.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:59, 15-05-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Весь вопрос только как самого себя перезаписывать. Вариант с помощью gsar:
Код: Выделить весь код
@echo off
setlocal

set "cnt=0"
set "seek=%cnt%"

echo %cnt%

set /a cnt+=1
1>nul gsar -s"cnt=%seek%" -r"cnt=%cnt%" -o %~nx0
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:29, 15-05-2011 | #3


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата gora:
Сам себя он дописать не сможет, т.к., он при выполнении будет занят системой. »
раз может стереть, значит может и дописать, но только в конец батника:
Код: Выделить весь код
@echo off

echo 001
echo 002
(
echo echo ---
echo echo 003
echo echo 004
echo pause
)>>"%~f0"
rem.
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:26, 16-05-2011 | #4


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Решил пойти по пути создания установочного файла. Подскажите, как через ECHO записать переменную. Пробовал так, не получается.
Код: Выделить весь код
>>"Inst.cmd" Echo Del "%~0"

Отправлено: 19:38, 16-05-2011 | #5


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
>>"Inst.cmd" Echo Del "%%~0"
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:41, 16-05-2011 | #6


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Ещё вопрос. Как через Echo записать 2>Nul
Код: Выделить весь код
>>"Inst.cmd" Echo 2>Nul RD /S/Q "%%WinDir%%\TEMP"

Отправлено: 20:30, 16-05-2011 | #7


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
>>"Inst.cmd" Echo 2^>Nul RD /S/Q "%%WinDir%%\TEMP"
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:33, 16-05-2011 | #8


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


sov44,

echo 2^>nul

Отправлено: 20:33, 16-05-2011 | #9


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Не получается записать %%I
Код: Выделить весь код
>>"Inst.cmd" Echo For %%I In (*.msp) Do Set /A Cnt += 1
Как сделать, чтобы в конце скрипта появлялся запрос на запуск вновь созданного батника, типа "Начать установку" Да / Нет , желательно через MsgBox.vbs


Нашел, как вывести 2 кнопки. Как сделать по умолчанию кнопку "Нет" и присвоить кнопкам действие?
Код: Выделить весь код
@echo off &chcp 1251 >nul
echo Set Args = WScript.Arguments> "%temp%\MsgBox.vbs"
echo MsgBox Args(0), vbYesNo, Args(1)>> "%temp%\MsgBox.vbs"
"%temp%\MsgBox.vbs" "Установить обновления?" "пример"
del /q "%temp%\MsgBox.vbs"

Последний раз редактировалось sov44, 16-05-2011 в 23:09.


Отправлено: 22:20, 16-05-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Батник дописывает сам себя

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
ВОПРОСЫ и Ответы ДЛЯ FAQ по Linux (сам задал - сам ответил :) ) ruslandh Общий по Linux 5 04-09-2017 10:59
Батник + групповые политики Dudee Microsoft Windows NT/2000/2003 21 09-06-2010 10:23
Разное - Батник и сеть _Gans_ Программирование и базы данных 3 20-11-2008 10:19
[решено] БАТНИК VS РЕЕСТР matios Автоматическая установка Windows 2000/XP/2003 4 28-12-2007 00:14
Комп сам включается и сам выключается... Gor2 Непонятные проблемы с Железом 40 15-11-2006 14:49




 
Переход