Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах

Модерирует : KLASS, IFkO

vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

hacsoft

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задачи на bat-файлах
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Набор GNU утилит для win32
· Встроенный справочник по командам: hh ntcmds.chm
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
 
Готовые решения и частые вопросы:
· Создание листинга директорий на примере создания плейлиста
· Разименовывание переменных
· Переименовывание файлов по дате создания
· Запуск сетевого подключения
· Запуск bat файлов как сервис
· Пример выполнения команд по результату команды ping
· Использование даты на день раньше чем сегодня
 
Невозможности — что нельзя сделать с помощью командных файлов:
· изменть конфигурацию IP на удаленной машине (без помощи rcmd.exe) [добавил ALEF]
 
 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Старая версия первого сообщения

Всего записей: 116 | Зарегистр. 18-11-2005 | Отправлено: 22:58 18-11-2005 | Исправлено: Elroir, 05:50 11-11-2006
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Будут варианты?

Может попытаться создать в папке, передаваемой в качестве параметра, какой-нибудь временный файл и проверить его существование?

Код:
 

@ECHO OFF
 
ECHO.>"%~1\1HJT5R6S3.TMP"
 
IF EXIST "%~1\1HJT5R6S3.TMP" (
  DEL "%~1\1HJT5R6S3.TMP"
  ECHO FOLDER "%~1" EXIST
) ELSE (
  ECHO FOLDER "%~1" NOT FOUND
)

 


Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 09:55 02-05-2006 | Исправлено: igor_andreev, 10:01 02-05-2006
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Мой вариант (проверяем атрибуты):

Код:
 
@echo off
setlocal
set atr=%~a1
if not "%atr%" == "" if not "%atr%" == "%atr:d=-%" echo Folder exist
endlocal
 

 
 
Добавлено:
З.Ы.
Вообще-то, проверить существование папки можно командой IF EXIST, но она одинаково работает как для файлов, так и для папок. Соответственно, не годится для проверки именно папок, так как возможны ложные срабатывания на файлы.

Всего записей: 3177 | Зарегистр. 09-02-2003 | Отправлено: 09:44 04-05-2006
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
(проверяем атрибуты):  

Век живи - век учись, я про аттрибуты и не вспомнил вообще
Тоже для разминки - выполнить батником "эффект пишущей машинки". Например, как в фильме "Матрица", помните, там появляются на экране монитора буква за буквой:
Call trans opt: received. 2-19-98 13:24:18 REC:Log
 
У меня еще и получилось сделать, чтоб цифры на экране падали

Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 13:41 04-05-2006
Vehn



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос не совсем по задачам, скорее по командам.. перерыл весь ntcmds.exe решения так и не нашёл. Вообще нужно получить некоторую информацию о компьютере сохранить в текстовый файл и отослать по мылу (если это возможно), что-то я нашёл, а что-то нет. Вот чего я не знаю как сделать:
1. Получить полный список установленных приложений (что-то наподобе pkg_info в никсах, точнее во FreeBSD).
2. Отослать получившейся текстовый файл на мыло (что-то на подобе net send, но только, чтобы посылал сообщение не по сетки, а получившийся текстовый файл на удалённый почтовый сервер, ну например на имейл pupkin@mail.ru)
3. Сделать так чтобы не открывалось чёрное окно во время выполнения всех этих и прочих операций
4. Сделать так, чтобы батник после своего выполнения удалился (самоуничтожился как бы чтоли... хотя сильно сомневаюсь, что такое возможно, если только методом помещения такого задания с помощью команды at в очередь
 
Как перенаправить вывод команд в файл и прочее расписывать нет необходимости, интересуют собственно сами команды. Спасибо.

Всего записей: 88 | Зарегистр. 12-01-2006 | Отправлено: 20:33 04-05-2006
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Vehn

Цитата:
1. Получить полный список установленных приложений (что-то наподобе pkg_info в никсах, точнее во FreeBSD).  
2. Отослать получившейся текстовый файл на мыло (что-то на подобе net send, но только, чтобы посылал сообщение не по сетки, а получившийся текстовый файл на удалённый почтовый сервер, ну например на имейл pupkin@mail.ru)  
3. Сделать так чтобы не открывалось чёрное окно во время выполнения всех этих и прочих операций  
4. Сделать так, чтобы батник после своего выполнения удалился

 
1. regedit /ea uninstall.reg HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
(но только то, что туда при установке прописалось)
2. blat (см. в шапке)
3. cmdow (см. в шапке)
4. В конце батника del /q "%~f0"

Всего записей: 3177 | Зарегистр. 09-02-2003 | Отправлено: 22:52 04-05-2006 | Исправлено: Smitis, 22:53 04-05-2006
Vehn



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
toSmitis
Спасибо, разобрался - работает. Меня заинтересовал вот какой момент что означает "%~f0" в команде удаления самого батника, нельзя прокомментировать этот фрагмент.

Всего записей: 88 | Зарегистр. 12-01-2006 | Отправлено: 00:51 05-05-2006
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis
 
Проверить существование папки можно через nul:
 
if exist path\to\folder\nul

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 09:26 05-05-2006
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
01MDM

Цитата:
Проверить существование папки можно через nul

Проверяем:

Код:
 
@echo off
if exist "%programfiles%\nul" echo Folder exist
if not exist "%programfiles%\nul" echo Folder not exist
 

Получаем: Folder not exist
Обломисимус. Гы.
 
Vehn
%0 - имя запущенного батника
%~f0 - получаем полный путь к батнику, убирая кавычки
Собственно, достаточно написать del /q %0, но по привычке пишу "%~f0"
По поводу модификаторов параметров - %windir%\help\ntcmds.chm, Index, в самом начале "% (параметры пакетных файлов)", либо смотри описание команды FOR (там используются такие же модификаторы для переменных цикла)
 
 

Всего записей: 3177 | Зарегистр. 09-02-2003 | Отправлено: 09:48 05-05-2006 | Исправлено: Smitis, 10:29 05-05-2006
Allex_Van_Fogen



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Очередные грабли:
 

Код:
 
@echo off
echo aaa=1>file.txt
 

 
Вроде все примитивно до предела, ан нет... Можно ли записать в файл aaa=1 без пробела после 1?

Всего записей: 92 | Зарегистр. 09-03-2003 | Отправлено: 10:15 05-05-2006
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Allex_Van_Fogen
echo aaa=^1>file.txt

Всего записей: 3177 | Зарегистр. 09-02-2003 | Отправлено: 10:28 05-05-2006
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis
 

Цитата:
 Получаем: Folder not exist  

 
Странно получается с %programfiles%
 
Код:
 

Код:
 
C:\
[Дмитрий]# if exist "%programfiles%\nul" echo 1
 
C:\
[Дмитрий]# if exist %systemroot%\nul echo 1
1
 
C:\
[Дмитрий]#
 

 
Еще:

Код:
 
C:\
[Дмитрий]# cd %programfiles%
 
C:\Program Files
[Дмитрий]# if exist Far\nul echo 1
1
 
C:\Program Files
[Дмитрий]#
 

 
Да уж ГЫ.
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:08 05-05-2006
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Да уж ГЫ.

Это не ГЫ, я про NUL и кавычки еще на прошлой странице написал
 
 

Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 12:55 05-05-2006
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А без кавычек как имена с пробелами проверять? Вот и не годится EXIST.

Всего записей: 3177 | Зарегистр. 09-02-2003 | Отправлено: 15:26 05-05-2006
Devilx



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
так как же все таки запускать из батника приложение при этом закрыв окно бат файла?
заранее прошу прощение, если это уже много раз обсуждалось

Всего записей: 336 | Зарегистр. 02-11-2004 | Отправлено: 15:41 05-05-2006
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Devilx
start приложение
exit

Всего записей: 3177 | Зарегистр. 09-02-2003 | Отправлено: 15:45 05-05-2006
Devilx



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
start приложение  
exit
 

точно, забыл (
 
и еще постоянный пинг заданного ip в переменной и beep только тогда когда пакеты идут 100% в заданный промежуток времени?
как решить?

Всего записей: 336 | Зарегистр. 02-11-2004 | Отправлено: 15:49 05-05-2006 | Исправлено: Devilx, 15:52 05-05-2006
hacsoft

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Тоже для разминки - выполнить батником "эффект пишущей машинки". Например, как в фильме "Матрица", помните, там появляются на экране монитора буква за буквой:  
Call trans opt: received. 2-19-98 13:24:18 REC:Log  
 
У меня еще и получилось сделать, чтоб цифры на экране падали  

Вот, что получилось на мотив матрицы:

Код:
@echo off
setlocal enabledelayedexpansion
mode con cols=80 lines=25
title M A T R I X
set str=Call trans opt: received. 2-19-98 13:24:18 REC:Log
for /l %%a in (0,1,50) do (
    cls
    echo !str:~0,%%a!_
    ping -n 1 -w 256 127.0.0.1 > nul
)
cls
echo %str%
ping -n 5 -w 1000 127.0.0.1 > nul
cls
color 02
:next
set scr=
for /l %%b in (0,1,78) do (
    set /a rnd=!random!%%2
    set scr=!scr!!rnd!
)
set /a r=%random%%%10
if %r%==0 color 0A
if %r%==1 color 02
echo %scr%
goto next

Всего записей: 116 | Зарегистр. 18-11-2005 | Отправлено: 18:00 05-05-2006 | Исправлено: hacsoft, 18:17 05-05-2006
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
hacsoft
Оно самое У меня только цифры по другому, а так ход мыслей такой же. zip, 1 Kb

Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 18:31 05-05-2006 | Исправлено: igor_andreev, 18:33 05-05-2006
nsky

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis

Цитата:
А без кавычек как имена с пробелами проверять? Вот и не годится EXIST.

А если так:

Код:
@echo off
 if exist "%programfiles%\nul" echo Folder exist
 if not exist "%programfiles%\nul" echo Folder not exist
 
 call :short "%programfiles%"
 if exist %p%\nul echo Folder exist
 if not exist %p%\nul echo Folder not exist
 goto :eof
 
:short
 set p=%~s1
 goto :eof
 

 
Добавлено:
SERG691018
Smitis

Цитата:
не подскажите как в 5 досе создать папку типа dd-mm-yy

 
Можно вот так попробовать

Код:
@echo off
:: ~yymmdd.bat
:: Set YYMMDD, YY, MM, DD environment variables.
:: Sample:
::     call ~yymmdd
::     echo %yymmdd% %yy% %mm% %dd%
 call ~dtm
 echo. >%tmp%\%dt%.
 if exist %tmp%\????-??-??. goto yyyy_mm_dd
 if exist %tmp%\??-??-????. goto dd_mm_yyyy
:dd_mm_yy
 for %%x in (0 1 2 3) do if exist %tmp%\%%x?.??.??. set dd=%%x
 for %%x in (0 1 2 3 4 5 6 7 8 9) do if exist %tmp%\?%%x.??.??. set dd=%dd%%%x
 for %%x in (01 02 03 04 05 06 07 08 09 10 11 12) do if exist %tmp%\??.%%x.??. set mm=%%x
 for %%x in (00 01 02 03 04 05 06 07 08 09) do if exist %tmp%\??.??.%%x. set yy=%%x
 goto set
:dd_mm_yyyy
 for %%x in (0 1 2 3) do if exist %tmp%\%%x?.??.????. set dd=%%x
 for %%x in (0 1 2 3 4 5 6 7 8 9) do if exist %tmp%\?%%x.??.????. set dd=%dd%%%x
 for %%x in (01 02 03 04 05 06 07 08 09 10 11 12) do if exist %tmp%\??.%%x.????. set mm=%%x
 for %%x in (00 01 02 03 04 05 06 07 08 09) do if exist %tmp%\??.??.??%%x. set yy=%%x
 goto set
:yyyy_mm_dd
 for %%x in (0 1 2 3) do if exist %tmp%\????-??-%%x?. set dd=%%x
 for %%x in (0 1 2 3 4 5 6 7 8 9) do if exist %tmp%\????-??-?%%x. set dd=%dd%%%x
 for %%x in (01 02 03 04 05 06 07 08 09 10 11 12) do if exist %tmp%\????-%%x-??. set mm=%%x
 for %%x in (00 01 02 03 04 05 06 07 08 09) do if exist %tmp%\??%%x-??-??. set yy=%%x
:set
 set yymmdd=%yy%%mm%%dd%
 del %tmp%\%dt%.
:: echo %yymmdd% %yy% %mm% %dd%
:bye
 

 
в связке с

Код:
Подробнее...

 

Всего записей: 5 | Зарегистр. 26-12-2005 | Отправлено: 16:20 06-05-2006 | Исправлено: nsky, 17:44 06-05-2006
AlexHote

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте помогите с батником который отправляет папку в архив  и присваивает ему имя=дата,  делает ето каждый день при включении или при простое, затем раз в месяц удаляет все архивы старше 1 месяца исключая 1 архив на первое число каждого месяца  
ну вы поняли ставится задача регулярного архивирования базы данных в качестве архиватора предпочтительнее винрар

Всего записей: 174 | Зарегистр. 27-05-2005 | Отправлено: 18:51 06-05-2006
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах
vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru