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

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


SerDIDG,
Цитата SerDIDG:
Если такое невозможно, порекомендуйте какой нибудь консольный редактор текста на который можно написать скрипт. »
штатного CMD-редактора нет, а обычные команды нужно использовать с оглядкой - чтобы в тексте не встречалось CMD-метасимволов (типа "|")
рекомендации стандартные: SED, AWK, про них можно почитать например ТУТ

ADD: в ресурс-ките NT4 была еще утилита MUNGE, но она просто заменяет (по списку) один текст на другой

Последний раз редактировалось amel27, 07-08-2008 в 12:43.

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

Отправлено: 12:24, 07-08-2008 | #281



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

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


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


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

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


Люди, не знаю, в какую из имеющихся тем засунуть этот вопрос: модеры, помогите, плз!

Вопрос такой: как в виндоуз задать переменную окружения _из потока_, т.е. как результату отработки какой-нибудь команды
исхитриться присвоить имя и это будет имя переменной окружения???

Нужно буквально следующее. Есть _файл_ (в смысле "не каталог", хотя вообще без разницы) вида drive:\dir1\dir2\xxxxxxUSR.txt
Результат отработки
Код: Выделить весь код
dir /b drive:\dir1\dir2\*USR*
чётко выдаст точное имя этого файла на стандартный вывод.
Так вот, хочу присвоить какой-либо переменной окружения значение имени этого файла, определённого командой dir.
В более широком смысле, конечно же, хочется вообще присваивать любой переменной окружения значения, полученные из потока.
Даже в микрософтовском техцентре на это не удалось найти ответ, команда set упорно не желает работать с потоками, мне не
удалось заставить её кушать данные из потока, даже когда она ждёт ввод данных с консоли (с ключом /p).
Please, help.

Отправлено: 20:08, 07-08-2008 | #282



Moderator


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

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


Gennie, примерно так:
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions

For /F "Delims=" %%I In ('Dir /B drive:\dir1\dir2\*USR* 2^>nul') Do Set N=%%I
Echo %N%
Результат в переменной N.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:06, 07-08-2008 | #283


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


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

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


Спасибо, мысль понял, попробую завтра на работе применить. Только в двух вещах не разобрался в вашем ходе мысли:
зачем stderr на нуль перенаправлять, и зачем заменять стандартные разделители на ничего, ведь в результате выполнения
команды dir получится в чистом виде имя файла, вроде без пробелов, и вроде на stderr ничего подаваться не должно в принципе.
Про stderr, если вы этим имеете в виду, что файл может быть не найден и возникнет ошибка, то я его перед выполнением
предполагаемого назначения переменной проверяю на существование конструкцией if not exist drive:\dir1\dir2\*USR* .....
(ну и какие-то действия стоят) -- оно работает. Поможете понять ваше предложение до конца?

ЗЫ: Вот здесь официальное описание команды нашёл, типа из первых рук. Редкостное убожество, к сожалению, как с точки зрения русского языка, так и технической грамотности текста, и иллюстрации примерами...

Отправлено: 02:03, 08-08-2008 | #284



Moderator


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

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


Цитата Gennie:
зачем заменять стандартные разделители на ничего, ведь в результате выполнения
команды dir получится в чистом виде имя файла, вроде без пробелов
Это просто универсальный способ (работает вне зависимости от наличия или отсутствия пробелов в имени).

Цитата Gennie:
Про stderr, если вы этим имеете в виду, что файл может быть не найден и возникнет ошибка, то я его перед выполнением
предполагаемого назначения переменной проверяю на существование конструкцией if not exist drive:\dir1\dir2\*USR*
Если так проверяете, можно не перенаправлять.

Отправлено: 10:10, 08-08-2008 | #285


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


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

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


Большое спасибо, оно заработало!!! 8-)

Последний раз редактировалось Gennie, 08-08-2008 в 12:56.


Отправлено: 10:41, 08-08-2008 | #286


Аватара для Dimtos

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


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

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


Добрый день! Написал скрипт, проверяющий размер БД на ПК (там где размер >= 200 Мб). БД лежит на C:\Exec\db\exec.gdb. Нужно проверить диапазон ip 10.1.*.161 - 10.1.*.202, где * диапазон от 10 до 255. Всё замечательно, но строчка


Код: Выделить весь код
FOR %%I IN (%MASK%) DO IF EXIST %%I SET SIZE=%%~zI
всё время возвращает в %SIZE% значение первого ПК (10.1.10.161). Помогите, пожалуйста, найти ошибку или обходной способ решения задачи. Спасибо!

Код: Выделить весь код
set /a podset =10
set /a ip =161
set fsz=0
set MASK= T:\Exec\db\exec.gdb
 
:pod1
set ipfull=10.1.%podset%.%ip%
if %ip%==202 goto pod2
if %podset%==255 goto exit
set /a ip =%ip%+1
:back
net use T: /d
Ping -n 3 %IPFULL%
echo pingerrorlevel %errorlevel%
If %errorlevel% geq 1 (Goto REZULT1)
 
net use T: \\%IPFULL%\c$ pass1 /user:login1
if "%errorlevel%"=="0"  (goto weiter)
 
net use T: \\%IPFULL%\c$ pass2 /user:login2
if "%errorlevel%"=="0" (goto weiter)
 
net use T: \\%IPFULL%\c$ pass3  /user:login3
if "%errorlevel%"=="0" (goto weiter)
 
net use T: \\%IPFULL%\c$ pass4 /user:login4
if "%errorlevel%"=="0" (goto weiter)
 
net use T: \\%IPFULL%\c$ pass5 /user:login5
if "%errorlevel%"=="0" (goto weiter)
 
:weiter
FOR %%I IN (%MASK%) DO IF EXIST %%I SET SIZE=%%~zI
set /a filesize=(%size%/1024/1024)
if "%filesize%" geq "200" (echo %SIZE% >> execSize.txt)&(echo %IPFULL% >> execSize.txt)&(echo %filesize% >> execSize.txt)&(echo ------- >> execSize.txt)
:REZULT1
goto pod1
 
:pod2
set /a podset =%podset%+1
set /a ip =161
goto pod1
 
:exit
pause
exit

Отправлено: 21:22, 21-08-2008 | #287



Moderator


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

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


Цитата Dimtos:
всё время возвращает в %SIZE% значение
Это называется раннее связывание.
Подробнее можете почитать, выполнив:
Код: Выделить весь код
set /?
Короче, надо вставить в начало батника:
Код: Выделить весь код
SetLocal EnableExtensions EnableDelayedExpansion
и везде заменить %SIZE% на !SIZE!

Отправлено: 21:35, 21-08-2008 | #288


Аватара для Dimtos

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


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

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


Petya V4sechkin, спасибо! Завтра попробую на работе.
UPD: заработало! спасибо ещё раз!

Последний раз редактировалось Dimtos, 22-08-2008 в 12:13. Причина: UPD


Отправлено: 22:17, 21-08-2008 | #289


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


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

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


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

Отправлено: 18:58, 26-08-2008 | #290



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




 
Переход