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

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

Модерирует : gyra, Maz

Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
(часть 1)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
 
Старая версия первого сообщения

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:08 19-11-2007 | Исправлено: Dmitriy05, 22:49 13-04-2008
sab0teur

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Чтобы удобно было работать под виндой со временем, я рекомендую юзать такую тулзу
http://www.saboteur.com.ua/ftp/files/CurTime.zip
 
Умеет выводить и выполнять строки со временем, включая плюс-минус
например
curtime32.exe $d
выводит сегоняшний день
 
curtime32.exe "сегодня $d$+1d завтра$d"
выводит дату для сегодня и завтра
 
curtime32 "$-1d del c:\backups\$w_backup\*.*" /exec
curtime32 "rar a c:\backup\$w_backup.rar e:\documents" /exec

Всего записей: 2 | Зарегистр. 18-07-2008 | Отправлено: 16:22 18-07-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sab0teur
Ru-boad ее тоже рекомендует . Она в шапке топика Задачи на bat-файлах 5 есть, в "Полезных утилитах". А я ее тут "рекламировал"

Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 16:41 18-07-2008 | Исправлено: igor_andreev, 16:43 18-07-2008
Svjt



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Да нет мне надо получить образы... Не тратить время на их изготовление образа... А просто с утра придти и записать на болванки...

Всего записей: 17 | Зарегистр. 03-03-2008 | Отправлено: 18:45 18-07-2008
sab0teur

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svjt:
 
Можно подойти к проблеме другими способами.
Например купить usb-винт вместо болванок - при таких количествах каждый день, CD и DVD не самый удобный вариант...
 
А с другой стороны вообще не понимаю твоей проблемы.
Если ты говоришь, что у тебя создается 40-300 томов, 7-45 папок, то зачем вообще мутить какой-то скрипт, если файлов всегда одинаково?
 
Сделай просто тупейший батник типа
mv file01.rar 01/
mv file02.rar 01/
..
mv file07.rar 01/
mv file08.rar 02/
 
и все
сделай в конце скрипта про всяк случай еще парочку строк для будущих архивов на случай увеличения и все.

Всего записей: 2 | Зарегистр. 18-07-2008 | Отправлено: 19:53 18-07-2008
Svjt



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
sab0teur этих архивов всегда разное количество, они имеют разное название (первая часть т.е. client1.part01.rar client2.part01.rar). С винтом тоге не прокатит... клиентов много, на всех не напасёшься, иногда проблема встаёт с компом, который не имеет ЮСБ или имеет ЮСБ1.1, не смейтесь, такое тоже бывает... =)) Но, вроде уже дописал скрипт, если кому интересно могу выложить код, вдруг понадобится...

Всего записей: 17 | Зарегистр. 03-03-2008 | Отправлено: 12:49 19-07-2008
max200701

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

Всего записей: 65 | Зарегистр. 27-02-2008 | Отправлено: 20:57 19-07-2008
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня вот такая проблемка, последнее время периодически ловлю на флешку разного рода вирусы, поэтому подумал:
А можно написать такой батник который будет срабатывать после того как вставил флешку в usb-разъем и удалять все файлы из корневой директории на флешке (а всё что в папках не трогать) и если есть/появились папки со статусом "только для чтения" или "скрытый" менял их статус на "видимый".
Ну и на последок, если есть на флешке папка "RECYCLER" то удалял ВСЁ ЧТО ТАМ ЕСТЬ без оговорок и лишних вопросов, а саму папку переменовывал в RECY_virus (после очистки)
 
Да, ну и конечно имя съемного диска ведь может менятся на разных компах.
 
Заранее СПАСИБО!

Всего записей: 1357 | Зарегистр. 28-10-2007 | Отправлено: 03:34 20-07-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vitrzn
 
Для дочери составил такой батник, что бы из школы не приносила мусор. Как правило подменялся autorun.inf и в корень флешки копировались левые файлы. Обязал ее запускать. После этого больше подарков не было.
 
Сейчас у нее в корне всего 4 файла:
 
- autorun.inf (первая строчка ";; 123-asd-098" - для проверки подлинности)
- 124.sdv - зашифрованный диск на 50Mb
- usb.ico
- clean.cmd - батник для очистки корня флешки
 

Код:
 
::
:: clean.cmd
::
 
@echo off
setlocal
 
pushd %~dp0
 
:: Создание временной папки для удаленных файлов (во избежание ошибок)
 
md QUARANTINE 2>nul
 
:: Проверка autorun.inf
 
findstr c:";; 123-asd-098" autorun.inf 1>nul || (
    move autorun.inf QUARANTINE\autorun.inf.!!
)
 
:: Проверка на наличие посторонних файлов,  
:: отличных от "clean.cmd autorun.inf 124.sdv usb.ico"
 
for /f "tokens=*" %%i in ('dir /b /a-d') do (
    echo %%i | findstr "clean.cmd autorun.inf 124.sdv usb.ico" 1>nul || (
        attrib -s -h -r "%%i"
        move "%%i" "QUARANTINE\%%~nxi.!!"
    )
)  
 
set cnt=0
for %%i in (QUARANTINE\*) do set /a cnt+=1
echo found %cnt% files
 
popd
pause 1>nul
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:19 20-07-2008 | Исправлено: 01MDM, 10:23 20-07-2008
vitrzn



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

Цитата:
01MDM

 
ОГРОМНОЕ СПАСИБО!
Вот только не разобрался как надо строчку ";; 123-asd-098" в autorun.inf написать, а то я ставлю её первой а батник этот autorun.inf переносит в папку QUARANTINE.
 
Ну чтобы понятно было:
создал autorun.inf такого содержания :
[AutoRun]
";; 123-asd-098"
shellexecute=\clean.cmd
Action=удалить весь лишний мусор
Label=Моя_Флешка
 
При вставленни флешки срабатывает автозапуск батинка и он же авторум и переносит в QUARANTINE, а надо чтобы он его не трогал! Ну либо если он "левый" то переносил, а в замен восстанавливал "родной"

Всего записей: 1357 | Зарегистр. 28-10-2007 | Отправлено: 12:58 20-07-2008
01MDM



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

Код:
 
;; 123-asd-098
[AutoRun]
shellexecute=\clean.cmd
Action=удалить весь лишний мусор
Label=Моя_Флешка  
 

 
Эта строчка может быть любой но начинаться с коментария ";", но соответственно надо поменять и строку поиска в батнике:
 

Код:
 
.....
findstr c:";; 123-asd-098" .....
.....
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:14 20-07-2008 | Исправлено: 01MDM, 13:15 20-07-2008
pedrosoft

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста написать БАТник.
 
Нужно прописывать маршрут:
route -p add 192.168.5.0 mask 255.255.255.0 IP_"МАШИНЫ НА КОТОРОЙ ЗАПУЩЕН батНИК"
 
Как вытащить IP мне подсказали:
for /F "usebackq skip=4 tokens=8" %i in ('tracert -d %COMPUTERNAME%') do @if not %i=="" @set local_ip=%i
echo %local_ip%
 
Подскажите пожалуйста как теперь оформить БАТник

Всего записей: 1 | Зарегистр. 20-07-2008 | Отправлено: 13:51 20-07-2008
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всё разобрался !!!
Название autorun.inf было AutoRun.inf вот и переносил!
 

Всего записей: 1357 | Зарегистр. 28-10-2007 | Отправлено: 14:04 20-07-2008
Svjt



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
max200701
По вашей просьбе выкладываю скрипты:
 
Основной, запускающий скрипт (самый простой):
 

Код:
rem %1-название файлов
rem %5-"7" - образы для CD "45"- для DVD
call pack.bat %1
call sort.bat %1 %5  
call iso.bat %1

 
Первый скрипт пакует (pack.bat):

Код:
set CurData=D:\WORK\bat\%1
 
rar m -m0 -r -ep1 -sfx -t -v25 %CurData%\%1 %CurData%\
 
date /t
time /t

 
Второй раскидывает файлы по папкам (sort.bat). Для CD дисков используется число "7", для DVD - "45", т.к. rar заставляем паковать по 100 метров получается 700 или 4500 метров, что и соответствует дискам...:

Код:
 
REM за %1 назначаем имя файла т.е. %1.part***.rar
set DIR=d:\WORK\bat\%1
set CDPATH=0
set ARPATH=1
 
REM Определение количества файлов
Set Cnt=0
For %%I In (%DIR%\%1*) Do Set /A Cnt += 1
Echo %Cnt%
 
REM Подбор имени архива (Если файлов больше 85 вид будет *.part002.rar),
REM а если от 10 до 85 то *part02.rar)
if /I %Cnt% LSS 86 (set NAR=.part
)else (set NAR=.part0)  
 
REM Наименование первого файла
set FIRST-AR=%NAR%01.exe
 
REM Определение количества папок
set disk=%Cnt%
set /a disk/=7
set /a diskT=disk*7
 
REM Если количество файлов не кратно 7, нужна ещё одна папка
if %Cnt%==%diskT% goto start_mkdir
set /a disk += 1
 
REM Создание папок
:start_mkdir
Echo %disk%
if %CDPATH%==%disk% goto end_sort
set /a CDPATH += 1
MKDIR %DIR%\cd-%CDPATH%
 
REM Сортировка архивов по папкам
:start_mar
set /a ARPATH += 1
set /a CDAR=CDPATH*7
 
REM Выбор имени файла (Меняется количество нулей)
if /I %ARPATH% LSS 10 (set arname=%1%NAR%0
) else (set arname=%1%NAR%)
REM Если файлов больше 100 и меньше 999 то сотые файлы будут выглядеть так  
REM *.part100.rar, поэтому ставим ещё одно условие
if /I %ARPATH% GEQ 100 set arname=%1.part
move %DIR%\%arname%%ARPATH%.rar %DIR%\cd-%CDPATH%\
if %ARPATH%==%CDAR% goto start_mkdir
if /I %ARPATH% GTR %Cnt% goto end_sort
goto start_mar
:end_sort
 
REM Перенос первого файла
move %DIR%\%1%FIRST-AR% %DIR%\cd-1\

 
И последний скрипт делает образы, для этого необходима утилитка CDIMAGE.EXE, её могно найти в пакете CDImage (поищите по нету, либо попросите меня, выложу или отправлю) (iso.bat)

Код:
REM Номер диска
SET N=0
Set Cnt=0
SET DIR=D:\WORK\bat\%1
For /D %%I In (%DIR%\cd*) Do Set /A Cnt += 1
Echo %Cnt%
 
:start
 
set /a N += 1
 
REM Путь к файлам
SET DISTR=%DIR%\cd-%N%
 
REM Папка куда упадёт образ
SET OUTPUT=%DIR%\
 
REM Метка тома
SET LABEL=GARANT%N%
 
REM  Создание ISO
 
CDIMAGE.EXE -l"%LABEL%" -j1 -m "%DISTR%" "%OUTPUT%\%LABEL%.ISO"
 
rd /s /q %DISTR%
 
if %N%==%Cnt% goto end
goto start
 
:end

 
Все скрипты буквально сегодня опробовал - работают... Могет быть несовпадение с путями, но, я думаю, все разберутся, если что...
 
Если вдруг потребуются пояснения - пишите - помогу...
 
P.S. всем спасибо за помощь и практически советы, если кто смогет помочь с улучшениями - буду только рад.. =))

Всего записей: 17 | Зарегистр. 03-03-2008 | Отправлено: 23:47 20-07-2008 | Исправлено: Svjt, 23:49 20-07-2008
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос:
Есть файл LAST_REC.TXT (в нём строчки текста), нужно скопировать весь текст из него и вставить в LAST_REC_stat.TXT (при копировании чтобы первой строкой ставилась текущая дата, можно даже и время, а уж потом весь скопированный текст) Но при вставлении в LAST_REC_stat.TXT копируемый текст добовлялся в начало файла, а тот текст который там был не удалялся.
Проще говоря, добавлялся.
 
Как это сделать ?
 

Всего записей: 1357 | Зарегистр. 28-10-2007 | Отправлено: 11:01 21-07-2008 | Исправлено: vitrzn, 11:02 21-07-2008
01MDM



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

Код:
 
@echo off
echo %date% %time:~0,5% 1>LAST_REC_stat.tmp
type LAST_REC.TXT 1>>LAST_REC_stat.tmp
type LAST_REC_stat.txt 1>>LAST_REC_stat.tmp
move /y LAST_REC_stat.tmp LAST_REC_stat.txt
 

 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:24 21-07-2008
vmix



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задача:
Логировать вкл/откл компов в сети
список компов -
hosts.txt:
10.0.0.1
10.0.0.2
...
10.0.0.254
 
требуется лог -
hosts.log:
20.07.2008 10:00:00 10.0.0.1 up
20.07.2008 10:00:01 10.0.0.2 down
20.07.2008 10:00:02 10.0.0.3 down
...
20.07.2008 10:00:10 10.0.0.1 down
20.07.2008 10:00:11 10.0.0.2 up
20.07.2008 10:00:12 10.0.0.3 up
20.07.2008 10:59:59 10.0.0.1 up
 
желательно иметь в памяти не более двух копий CMD

Всего записей: 162 | Зарегистр. 22-10-2002 | Отправлено: 14:44 21-07-2008
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Эх, ну зря нету кнопочки "СПАСИБО" !!!!!
Всё работает !!!
 
Ну и заразно-полезное же это дело - облегчение рутины с помощью батников
 
Тогда вот такой ещё вопросик.
Как можно скопировать все названия файлов (которые находятся в папке) в файл 1.txt  
и как сделать тоже самое но уже из другой папки (в сетевой), где доступ только "для чтения" (соот. батник от туда запустить нельзя)
Если можно то формат выведеного в 1.txt такой  :
 
\\ust\07\07-01\
default.br2
Wincmd.ini
Uninstall.exe
Cabrk.dll
Cglpt9x.vxd
Cglptnt.sys
 
T:\distr\Plugins\arc\
Ace.cfg
Ace.exe
Ace.key
Ace.msg
Arj.exe
Default.sfx
Lha.exe
Uc2.exe
 
Ну типа так. Как в тотале это сделать я знаю, но вот хотелось чтобы "без ручек"

Всего записей: 1357 | Зарегистр. 28-10-2007 | Отправлено: 15:15 21-07-2008 | Исправлено: vitrzn, 17:06 21-07-2008
iamantbk

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите, пожалуйста, как протестировать архив rar, и, если он нормальный, то распаковать, иначе - остановиться и сообщить об этом.
 
Может ли cmd-файл обрабатывать коды возврата?
 
Спасибо.

Всего записей: 61 | Зарегистр. 30-04-2008 | Отправлено: 02:55 22-07-2008 | Исправлено: iamantbk, 02:56 22-07-2008
gryu



дикий гусь
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iamantbk
"CMD" файл вообще ничего не не может. Он только контейнер.  
Могут или нет что бы то нибыло, команды, которые прописаны в "cmd файле".  
Часть команд может обрабатывать в том числе и коды возврата.  

Всего записей: 12952 | Зарегистр. 15-03-2006 | Отправлено: 11:05 22-07-2008
Tipulatoid



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

Код:
@echo off
setlocal enabledelayedexpansion
for /l %%a in (0,1,254) do (
   ping -n 1 0.10.0.%%a
   if !errorlevel!==0 (
      echo !date! !time! 0.10.0.%%a up>>hosts.log
   ) else (
      echo !date! !time! 0.10.0.%%a down>>hosts.log
   )
)
 

 
vitrzn

Код:
@echo off
set "first_folder=T:\distr\Plugins\arc\"
set "second_folder=\\ust\07\07-01\"
 
call :label %first_folder%
call :label %second_folder%
goto :eof
 
:label
echo %~1 >>1.txt
dir /b "%~1">>1.txt
 
goto :eof
 

 
iamantbk

Код:
@echo off
set archive=dantiterror.rar
 
rar t %archive%
if %errorlevel%==0 (
   rar e -c %archive%
) else (
   echo.
   echo 
   echo Ошибка! Архив %archive% поврежден!
   pause
)

Имя архива вставить надо своё. Естественно, rar.exe должен быть либо в текущей папке либо в одной из папок, указанных в переменной %path%

Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 11:16 22-07-2008
   

Страницы: 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 102 103 104 105 106 107 108

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2
Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru