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

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

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

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


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

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


Внимание!


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

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





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

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

 

Googler


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

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


Freezet,
Цитата Freezet:
Нужен батник »
тут не стол заказов, а место обсуждения конкретных проблем, для начала приложите свои усилия

D_Master
Цитата Petya V4sechkin:
пример Drives.vbs из Flash Drive Disinfector »
тот же запрос на CMD:
Код: Выделить весь код
For /F %%i In ('WMIC LogicalDisk Where "(DriveType=2 Or DriveType=3) And (MediaType=0 Or MediaType=11 Or MediaType=12 Or MediaType Is Null)" GET DeviceID^|Find ":"') Do @Echo %%i
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:00, 25-11-2008 | #481



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

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


Старожил


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

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


amel27
Большое спасибо за то, что откликнулись. Хочу уточнить.

По вопросу 3, сначала проверить включена ли служба и только при её отключенном состоянии, включить.

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

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


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


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

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


amel27, прошу прощения... что я должен сделать? если не разбираюсь в етом? ето не раздел помощи? я приложил усилия чтоб правильно и понятно задать вопрос....

Тема называется Нужна помощь в написании BAT.... чем не понравились мои слова?

Помощи не ждать?

Последний раз редактировалось Freezet, 25-11-2008 в 16:40.


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


Googler


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

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


Freezet
извиняюсь за назидательный тон, но незнание не освобождает от чтения справки (зачем шапка?),
от готового скрипта мало толку если вы сами не приложили к нему свою руку и голову

Цитата Freezet:
что я должен сделать?
разбить задачу на маленькие подзадачи, попытаться самостоятельно решить каждую в отдельности:

1. определить по имени файла имя архива;
2. добавить файл в архив и удалить оригинал;
3. определить по имени архива имя папки назначения;
4. отделить старые архивы от актуальных;
5. переместить старые архивы в свои папки хранения;
6. удалить старые папки хранения в каталоге назначения.

каждая задача может решаться по разному
Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion

Set DIR1=C:\CSTRIKE
Set DIR2=C:\DEMOS
Set NMAX=5

For %%i In ("%DIR1%\*.dem") Do Rar m -ep %%i.rar %%i
For %%i In ("%DIR1%\*.rar") Do (
    Set $NAME=%%~ni
    Set $Y=!$NAME:~3,2!
    Set $M=!$NAME:~5,2!
    Set $D=!$NAME:~7,2!

    If "%DATE%" NEQ "!$D!.!$M!.20!$Y!" (
        Set $PATH=%DIR2%\!$D!.!$M!.!$Y!\
        If Not Exist "!$PATH!" MD "!$PATH!"
        MOVE "%%i" "!$PATH!"
    )
)
For /F "Delims=" %%i In ('DIR /O:-D /A:D /B "%DIR2%\*"') Do (
    Set /A NMAX -=1
    If !NMAX! LSS 0 RD /S /Q "%DIR2%\%%i"
)
З.Ы. Кстати, про секунды неясность - в имени файла их нет, а имя архива в условии в точности совпадает именем файла... или старые файлы перезаписываются?.. тогда и в архиве они тоже будут перезаписываться!

Последний раз редактировалось amel27, 26-11-2008 в 10:19. Причина: оффтоп удален


Отправлено: 04:18, 26-11-2008 | #484


Googler


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

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


Rostlv,
Цитата:
сначала проверить включена ли служба и только при её отключенном состоянии, включить »
NET START сам это делает
Цитата:
мой CMD работает, я беру и завершаю процесс CMD.exe, скрипт прекращает работу, но остаётся в директории запуска, отсюда вопрос, как самоудалить мой файл в случае принудительного завершения процесса? »
из батника никак
Цитата:
запретить принудительное завершение моего процесса CMD.exe »
от кого защищать? Администратор может завершить любой процесс (кроме SYSTEM), обычный пользователь только свои

Отправлено: 10:16, 26-11-2008 | #485


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


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

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


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

При запуске батника пишет Системе не удается найти указанный путь

на счет совпадений имен думаю их не будет или очень-очень редко

Отправлено: 13:20, 26-11-2008 | #486


Googler


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

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


Цитата Freezet:
При запуске батника пишет Системе не удается найти указанный путь »
скопируй RAR.EXE в каталог с батником или добавь путь к нему в переменную PATH
Цитата Freezet:
на счет совпадений имен думаю их не будет »
тогда в каждом архиве будет по одному файлу, т.е. накопительных архивов не будет

Отправлено: 13:29, 26-11-2008 | #487


Старожил


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

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


amel27, уточнения по вопросу 4:
Нужно, чтобы этот код работал на протяжении всего CMD-скрипта, а не единожды, как это сделать?

Цитата:
Set PROCESS=cmd.exe
For /F %%i In ('TaskList^|FindStr /BIC:"%PROCESS%"') Do Set PROCNAME=%%i
If "%PROCNAME%"=="" (
Del /F /Q %0
GoTo :EOF
)
уточнения по вопросу 7:
Код работает, но записывает квадратики, как установить правильную кодировку?

Отправлено: 16:45, 26-11-2008 | #488


Googler


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

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


Rostlv
Цитата:
чтобы этот код работал »
нерабочий код, cmd.exe это тот же батник, т.е. типа: если меня "убили" - убрать свой "труп"
это какой такой "дух скрипта" будет потом удалять? если волнует безопасность, варианты:

- запускать батник из TEMP-каталога (рано или поздно удалится);
- компилировать батник в EXE-файл, тогда вскрыть код будет проблематично;
- отслеживать процесс другим скриптом или тем же, но запущенным в другом процессе, но простой проверки "CMD.EXE" будет недостаточно (оба процесса будут CMD.EXE)

Цитата Rostlv:
записывает квадратики, как установить правильную кодировку? »
хранить текст батника в DOS-кодировке (синонимы: OEM, 866)
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:01, 27-11-2008 | #489


Аватара для DImaN!

Ветеран


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

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


Добрый день. Я уже задавал этот вопрос в теме по AutoIT, но меня перенаправили сюда. Не могли бы Вы мне помочь с одной маленькой задачей, а именно:
Как можно в VBScript получить путь к текущей директории и zip-архиву. К примеру, на диске С в папке folder находится какой-то file.zip, нужно его распаковать средствами VBScript.
Но нужно, чтобы сам файл скрипт искал в той же директории, где и он сам находится (+ желательно, чтобы он искал все архивы и их распаковывал).
Вот пример моего кода, который как я написал распаковывает только указанный файл в указанной директории:
Код: Выделить весь код
strZipFile = "c:\folder\file.zip"         
outFolder = "c:\folder" 
    
Set objShell = CreateObject( "Shell.Application" )
Set objSource = objShell.NameSpace(strZipFile).Items()
Set objTarget = objShell.NameSpace(outFolder)
intOptions = 256
objTarget.CopyHere objSource, intOptions

-------
It's only after we've lost everything that we're free to do anything... Блог


Последний раз редактировалось DImaN!, 27-11-2008 в 09:56.


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



Компьютерный форум 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




 
Переход