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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Закрытая тема
Настройки темы
Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

Новый участник


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

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


Внимание!


В связи с созданием отдельного форума по скриптовым языкам, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема.

Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь в написании батника". Это и так понятно Заголовок темы должен быть осмысленным.





Исходный вопрос участника
Всех приветствую.
Задача следующая: смотрим в в каталог (например d:\dir\*.*) и если в нем сущетвуют файлы возраст которых более 40 дней, то отправляем email на указанный адрес.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:17, 01-11-2005

 

Новый участник


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

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


Блин ничего не понял... тыкал, тыкал.. (

мне нужно
F:/111/download.dat
F:/111/global.dat
F:/111/opera6.ini
перенести с заменой в
E:\Program Files\Opera\profile
и потом автоматически запустить opera.exe....
если не трудно помогите плз..

Отправлено: 01:09, 24-11-2008 | #471



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

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


Новый участник


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

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


Уважаемый amel27 подсказал с написанием кода, который прекрасно работает.
Код: Выделить весь код
@Echo Off
Set PRGDIR=%ProgramFiles%\XXX
Set PRGEXE=yyy.exe
Set PRGNEW=yyy_new.exe
Set PRGOLD=yyy_old.exe
If Not Exist "%PRGDIR%\%PRGNEW%" MSG * "Предупреждение! Обновлений программы не обнаружено!"& Exit
If Exist "%PRGDIR%\%PRGOLD%" DEL /Q /F "%PRGDIR%\%PRGOLD%"
If Not Exist "%PRGDIR%\%PRGOLD%" REN "%PRGDIR%\%PRGEXE%" "%PRGOLD%"
If Not Exist "%PRGDIR%\%PRGEXE%" REN "%PRGDIR%\%PRGNEW%" "%PRGEXE%"
If Exist "%PRGDIR%\%PRGNEW%" MSG * "Ошибка! Обновление программы не произведено, обратитесь к администратору!"& Exit
MSG * "Сообщение! Программа обновлена, для применения изменений необходим выход из программы."
Можно ли, реализовать в данном скрипте, что бы при выводе этих сообщений, в текстовом окне, отображался соответственный значок: или похожий по смыслу.

Отправлено: 01:19, 24-11-2008 | #472

D_Master


Сообщения: n/a

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


inplust,
Код: Выделить весь код
@echo off
set dir="E:\Program Files\Opera\profile"
set out=F:\111
copy /Y %out%\download.dat %dir%\
copy /Y %out%\global.dat %dir%\
copy /Y %out%\opera6.ini %dir%\
cd /D E:\Program Files\Opera
start opera.exe
exit
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:53, 24-11-2008 | #473


Googler


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

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


Цитата Bosika:
что бы при выводе этих сообщений, в текстовом окне, отображался соответственный значок »
через CMD никак, можно через VBS:
Код: Выделить весь код
On Error Resume Next

PrgDir = "MyProgram" ' Путь относительно %ProgramFiles%
PrgExe = "yyy.exe"
PrgNew = "yyy_new.exe"
PrgOld = "yyy_old.exe"

Set objWSS = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

PrgDir = objWSS.ExpandEnvironmentStrings("%ProgramFiles%") &"\"& PrgDir
PrgExe = PrgDir &"\"& PrgExe
PrgNew = PrgDir &"\"& PrgNew
PrgOld = PrgDir &"\"& PrgOld

If (objFSO.FileExists(PrgNew) = vbFalse) Then
    Call MsgBox("Обновлений программы не обнаружено!",32,"Сообщение")
    Wscript.Quit
End If

If (objFSO.FileExists(PrgOld) = vbTrue ) Then objFSO.DeleteFile PrgOld
If (objFSO.FileExists(PrgOld) = vbFalse) Then objFSO.MoveFile PrgExe, PrgOld
If (objFSO.FileExists(PrgExe) = vbFalse) Then objFSO.MoveFile PrgNew, PrgExe
If (objFSO.FileExists(PrgNew) = vbTrue ) Then
    Call MsgBox("Обновление программы не произведено, обратитесь к администратору!",16,"Ошибка")
    Wscript.Quit
End If

Call MsgBox("Программа обновлена, для применения изменений необходим выход из программы.",48,"Предупреждение")

Отправлено: 07:37, 24-11-2008 | #474



Moderator


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

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


Цитата D_Master:
осталась небольшая проблемка - скрипт определяет ещё и диск A:\ и пытается накопировать файла туда, как бы этого избежать?
Можно добавить проверку MediaType:
Код: Выделить весь код
On Error Resume Next

Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile("_drives.cf")
Set objLogFile = objFSO.OpenTextFile("_drives.cf", ForAppending, True)

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
For Each objDisk In objWMIService.ExecQuery ("Select DeviceID From Win32_LogicalDisk Where ((DriveType = 2 Or DriveType = 3) And (MediaType = 0 Or MediaType = 11 Or MediaType = 12 Or MediaType Is Null))")
	objLogFile.Write(objDisk.DeviceID)
	objLogFile.WriteLine
Next

Отправлено: 10:03, 24-11-2008 | #475

D_Master


Сообщения: n/a

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


Petya V4sechkin, благодарю, всё супер!

Отправлено: 13:03, 24-11-2008 | #476


Старожил


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

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


Несколько вопросов по CMD:

1. Нужна команда позволяющая запуск CMD-файла только в указаной директории, если запустить файл в любой другой - отмена выполнения.

2. Как указать в CMD-файле проверку наличия большого количества файлов (примерно 40), при отсутствии хотя-бы одного из указанных - отмена выполнения.

3. Как указать проверку включена ли служба, если нет - запустить службу.

4. Можно ли прописать в CMD-файл проверку наличия определённого процесса, при отсутствии такого - выход из исполняемого CMD.

5. Если по какой либо причине, например после принудительного завершения процесса CMD.exe, мой CMD-файл прекратил работу, какая должна быть команда самоудаления.

6. Как самоудалить скрытый CMD, [Del /F /Q %0] - не работает.

7. Как прописать в файл дистрибутива svcpack.in_ свою строку?

Отправлено: 13:36, 24-11-2008 | #477


Новый участник


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

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


D_Master, спасиб большое! Выручил! Всё работает!

Отправлено: 14:26, 24-11-2008 | #478


Пользователь


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

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


Нужен батник.

Имеется папка cstrike, в ней примерно каждый час появляются 2 новых *.dem файла, имена их примерно такие
cl-0811241311-de_train.dem
cl-0811241301-de_dust2.dem
где:
cl - не меняется
081124 - дата (год/месяц/число)
1311 и 1301 - время (чч/мм)
de_dust2 и de_train - часть имени (имена карт в игре CS 1.6)

Нужно чтоб при запуске батника файлы dem с папки cstrike добавлялись в архив (можно winrar или 7zip) и перемещались в папку demos/%date%/ тоесть каждый день новая папка в которой файлы dem только за етот день. Пример:
demos/24.11.08/cl-0811241311-de_train.dem.rar
demos/24.11.08/cl-0811241301-de_dust2.dem.rar
demos/25.11.08/cl-0811251740-de_nuke.dem.rar
demos/25.11.08/cl-0811251805-de_inferno.dem.rar

чтоб ето было только за последние 5 дней, тоесть когда пойдет 6й день то папка с 1м днем стерлась

Только одна проблема наверное, последний созданный файл будет не законченым и каждую секунду будет набирать вес, тоесть нужно сделать чтоб его в архив не бросало и не перемещало.

Батник будет добавлен в Назначенные задания и будет выполнятся каждый час.

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

Отправлено: 14:49, 24-11-2008 | #479


Googler


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

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


Rostlv
1. Каталог запуска ROOT
Код: Выделить весь код
Set ROOT=C:\TEST

If "%~dp0" NEQ "%ROOT%\" Exit

@Echo Текст скрипта
2. Одноименный LST-файл содержит список обязательных файлов
Код: Выделить весь код
Set ROOT=C:\WINDOWS

DIR /B/A:-D "%ROOT%\*" >"%~dpn0.tmp"
FindStr /IVBEG:"%~dpn0.tmp" "%~dpn0.lst"

If Not ErrorLevel 1 Exit
@Echo Текст скрипта
3. Так проверить или запустить?.. "NET START /?"
4. Например так:
Код: Выделить весь код
Set PROCESS=notpad.exe

For /F %%i In ('TaskList^|FindStr /BIC:"%PROCESS%"') Do Set PROCNAME=%%i
If "%PROCNAME%"=="" Exit

@Echo Текст скрипта
5,6 Не вижу разницы между вопросами
Код: Выделить весь код
ATTRIB -R -H -S "%0"
DEL "%0"
7. распаковать -> записать -> запаковать
Код: Выделить весь код
Set ROOT=C:\TEST

Set $CAB=%ROOT%\svcpack.in_
Set $INF=%TEMP%\svcpack.inf

Expand "%$CAB%" "%$INF%"
Echo Строка 1 >>"%$INF%"
Echo Строка 2 >>"%$INF%"

makecab /D CompressionType=LZX /D CompressionMemory=21 /L "%ROOT%" "%$INF%"
del /f /q "%$INF%"
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:42, 25-11-2008 | #480



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] VBS/WSH. Сортировка файлов по дате. rancid Скриптовые языки администрирования Windows 3 23-07-2009 06:38
[решено] Как с помощью CMD(BAT) запустить запароленный sfx архив! ofcoss Автоматическая установка приложений 7 10-07-2009 00:41
CMD/BAT - [решено] Нужна помощь в создании bat-ника для распаковки и переименования файлов/папок Nun-Nun Скриптовые языки администрирования Windows 6 14-05-2009 15:45
Нужна снова ваша помощь в написании интересного скрипта Magnus Вебмастеру 2 09-06-2005 20:26
Нужна помощь в написании скрипта Magnus Вебмастеру 7 06-05-2005 10:53




 
Переход