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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
DCT

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может немножко не в тему, но я для таких вещей использую vbs-скрипт, прикрученный на кнопку Total Commander-а:
http://forum.wincmd.ru/viewtopic.php?t=977&start=45&sid=46399dad895d0db6d712b0e62554fdb3
как это происходит:делаю поиск по шаблону, файлы на панель, выделить все, нажимаешь на кнопочку - вводишь что менять, на что менять - готово!
 
Из комстроки (в батнике надо ставить вместо % %%)
создать листинг всех файлов с полными путями (к примеру !list) далее
for /f %i in (!list) do sed –in-place “s/T:\\CD/T:\\vit\\CD/g” %i

Всего записей: 784 | Зарегистр. 22-12-2005 | Отправлено: 19:37 28-08-2008 | Исправлено: DCT, 19:48 28-08-2008
28Diman89

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всем добртго времени суток!
следующая проблема: нужны 4 батника
1) надо загрузить с http файл с с определенным именем (например с http://mysite.ru файл zzz.txt    ну и положить его куда нить на диск С)
2) надо загрузить с ftp с файл с определенным именем (например с ftp://mysite.ru файл zzz.txt   ну и положить его куда нить на диск С)
3) надо загрузить с http группу файлов с одинаковым расширением (например с http://mysite.ru файлы *.zip    ну и положить их куда нить на диск С)
4) надо загрузить с ftp группу файлов с одинаковым расширением (например с ftp://mysite.ru файлы *.zip    ну и положить их куда нить на диск С)
кто может помочь плз!!!!!!!  буду признателен. а еще лучше чтоб все 4 в 1))
если что вот ася 457844611

Всего записей: 9 | Зарегистр. 29-08-2008 | Отправлено: 00:45 29-08-2008
Valdon



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Извините если не фтему.... Подскажите сторонние консольные утилиты позволяющие изменить несколько байт в BIN-файле.... т.е. что-то типа:
Код:
утилита.exe "имя BIN-файла" 0xАдрес_1 0xБайт_1, 0xАдрес_2 0xБайт_2, ... ,0xАдрес_N 0xБайт_N  
???
А стандартными средствами в ХРюше (без сторонних утилит) из bat'ника можно както сие реализовать ?
 
УПС... Сорри, ответ был на предыдущей странице ....

Всего записей: 415 | Зарегистр. 25-07-2005 | Отправлено: 14:40 30-08-2008 | Исправлено: Valdon, 14:52 30-08-2008
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
28Diman89
На все четыре вопроса - wget
http://www.christopherlewis.com/WGet/WGetFiles.htm

----------
Разум когда-нибудь победит

Всего записей: 2435 | Зарегистр. 09-02-2003 | Отправлено: 22:32 30-08-2008
28Diman89

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

Всего записей: 9 | Зарегистр. 29-08-2008 | Отправлено: 22:42 30-08-2008
Smitis



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

Цитата:
А можно все таки с помощью батников?

Без стороних утилит - нет.

----------
Разум когда-нибудь победит

Всего записей: 2435 | Зарегистр. 09-02-2003 | Отправлено: 22:50 30-08-2008
28Diman89

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis
можешь написать конкретную команду в wget для каждого из моих примеров? (с английским плохо) плз
и прогу куда то пихать надо ? (в Windows или в system 32? ) как? откуда запускать?

Всего записей: 9 | Зарегистр. 29-08-2008 | Отправлено: 22:52 30-08-2008
Smitis



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

Цитата:
в Windows или в system 32?

В этом вопросе содержиться и ответ
В общем случае - в любую папку из PATH.
Ещё ссылка http://ru.wikipedia.org/wiki/Wget
Там же есть примеры. Добавлю, что для скачивания по маске используется ключ accept.
 
Пример (из своего батника) - обновить zip и dll файлы (т.е. только с более новой датой) для drweb-а (в текущую папку):

Код:
 
@echo off
title DrWeb UPDATE
echo DrWeb UPDATE: Start
setlocal
mkdir C:\Trash\AV\DrWeb\upd 2> nul
pushd C:\Trash\AV\DrWeb\upd
wget -nd -N -r -l 0 --accept=zip,dll ftp://ftp.drweb.com/pub/drweb/bases/ --dont-remove-listing
title DrWeb UPDATE: Complete
echo DrWeb UPDATE: Complete
popd
endlocal
 



----------
Разум когда-нибудь победит

Всего записей: 2435 | Зарегистр. 09-02-2003 | Отправлено: 23:00 30-08-2008 | Исправлено: Smitis, 23:03 30-08-2008
28Diman89

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis
если можно напиши примеры, из твоего батника я понял только откуда берутся файлы и какие файлы (zip и dll) остальное    (-nd -N -r -l 0 -) туман  
сам в этом не разбираюсь ни грамма, куда файлы скопирутся? так и не понял надо ли прогу куда - либо копировать?  
 
Добавлено:
Smitis
я в командно строке ваще не разбираюсь

Всего записей: 9 | Зарегистр. 29-08-2008 | Отправлено: 23:06 30-08-2008
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
28Diman89
Скачать файл http://www.christopherlewis.com/WGet/wget-1.11.4b.zip
Распаковать из архива файлы openssl.exe wget.exe libeay32.dll msvcr71.dll msvcr80.dll ssleay32.dll (ну или, если лень возиться, все ) в папку, например, %windir%\system32.
Ну а дальше - писать батник и выполнять. Или непосредственно из командной строки, запустив cmd.exe
 
Скачать один файл, с указание куда:
wget -P c:\путь\для\сохранения http://mysite.ru/zzz.txt
wget -P c:\путь\для\сохранения ftp://mysite.ru/zzz.txt
 
Скачать несколько файлов:
wget -P c:\путь\для\сохранения\zip -A zip http://mysite.ru
wget -P c:\путь\для\сохранения\zip -A zip ftp://mysite.ru


----------
Разум когда-нибудь победит

Всего записей: 2435 | Зарегистр. 09-02-2003 | Отправлено: 17:26 31-08-2008 | Исправлено: Smitis, 17:29 31-08-2008
28Diman89

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis
привет, спасибо за советы, у мя след проблема  
след варианты батников пробую, ни 1 не работает
1)  
copy libeay32.dll "%windir%\system32\"
copy msvcr71.dll "%windir%\system32\"
copy msvcr80.dll "%windir%\system32\"
copy openssl.exe "%windir%\system32\"
copy ssleay32.dll "%windir%\system32\"
copy wget.exe "%windir%\system32\"
mkdir C:\DrWeb_Update\
wget -P C:\DrWeb\ -A zip ftp://ftp.drweb.com/pub/drweb/bases/  
 
 
2)
copy libeay32.dll "%windir%\system32\"
copy msvcr71.dll "%windir%\system32\"
copy msvcr80.dll "%windir%\system32\"
copy openssl.exe "%windir%\system32\"
copy ssleay32.dll "%windir%\system32\"
copy wget.exe "%windir%\system32\"
mkdir C:\DrWeb_Update\
wget -P C:\DrWeb_Update\ -A zip ftp://ftp.drweb.com/pub/drweb/bases/
 
 
3)
@echo off
title DrWeb UPDATE
echo DrWeb UPDATE: Start
copy libeay32.dll "%windir%\system32\"
copy msvcr71.dll "%windir%\system32\"
copy msvcr80.dll "%windir%\system32\"
copy openssl.exe "%windir%\system32\"
copy ssleay32.dll "%windir%\system32\"
copy wget.exe "%windir%\system32\"
setlocal
mkdir C:\DrWeb_Update\ 2> nul
pushd C:\DrWeb_Update\
wget -nd -N -r -| 0 --accept=zip ftp://ftp.drweb.com/pub/drweb/bases/ --dont-remove-listing
title DrWeb Update: COMPLETE
echo DrWeb Update: COMPLETE
popd
endlocal
 
 
в чем проблема я хз. прощшу помощи

Всего записей: 9 | Зарегистр. 29-08-2008 | Отправлено: 00:14 01-09-2008
Robby

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите с такой задачей:
есть папка, в ней подкаталоги, в подкаталогах есть много файлов с расширением pdf. Нужно в каждом подкаталоге  слить все pdf файлы в один  и после - удалить все исходные pdf файлы. Pdf файлы представляют собой отдельные страницы с цифровыми именами, поэтому имена должны быть отсортированы в порядке возрастания.
Для слияния используется утилита pdfspme_cmd.exe из программы Ap PDF Split/Merge.  Eе синтаксис такой:
pdfspme_cmd.exe  -mer  -i <input1> ... -i <input N>   -o <output>
Как это можно реализовать?

Всего записей: 857 | Зарегистр. 28-09-2003 | Отправлено: 11:40 01-09-2008
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
28Diman89
Я уже сам малость подзабыл, пришлось освежить в памяти

Код:
 
wget -P C:\DrWeb_Update\ -A zip -r -l 0 -nd ftp://ftp.drweb.com/pub/drweb/bases/
 

ключи:
-P - задать путь для сохранения (создастся автоматически)
-A - расширения через запятую
-r - обходить рекурсивно (скачивать всё)
-l 0 - уровень обхода (не заходить во вложенные директории)
-nd - не создавать структуру директорий (сваливать всё в папку, заданую ключём -P)
Это не перевод, это так, по смыслу
P.S. Многие ключи могут быть сокращённого и полного написания, например "-A расширения" и "--accept=расширения" это одно и то же.
 
Добавлено:
Robby

Цитата:
Помогите с такой задачей:  
есть папка, в ней подкаталоги, в подкаталогах есть много файлов с расширением pdf. Нужно в каждом подкаталоге  слить все pdf файлы в один  и после - удалить все исходные pdf файлы. Pdf файлы представляют собой отдельные страницы с цифровыми именами, поэтому имена должны быть отсортированы в порядке возрастания.  
Для слияния используется утилита pdfspme_cmd.exe из программы Ap PDF Split/Merge.  Eе синтаксис такой:  
pdfspme_cmd.exe  -mer  -i <input1> ... -i <input N>   -o <output>  
Как это можно реализовать?

Примерно так:

Код:
 
@echo off
:: Обходим директории
for /f "delims=*" %%d in ('dir /b/s/ad') do call :_ddd "%%d"
goto:eof
 
:_ddd
echo %~n1
pushd %1
if not exist *.pdf goto:eof
 
:: Имя результирующего PDF - имя папки в ней же
set "output=%~dpn1.pdf"
 
:: Собираем строку input-файлов
set "input="
for /f "delims=*" %%p in ('dir /b/on *.pdf') do call :_ppp "%%p"
 
pdfspme_cmd.exe -mer %input% -o "%output%"
 
:: Удаляем pdf-файлы
:: Чтобы не удалить результат, делаем его временно невидимым
attrib +h "%output%"
del /q *.pdf
attrib -h "%output%"
 
popd
pause
goto:eof
 
:_ppp
set "input=%input% -i %1"
goto:eof
 

Нюанс - правильность сортировки файлов командой dir

----------
Разум когда-нибудь победит

Всего записей: 2435 | Зарегистр. 09-02-2003 | Отправлено: 12:31 01-09-2008 | Исправлено: Smitis, 13:11 01-09-2008
Robby

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis
Попробовал батник - работает. Единственное, что заметил, выходной файл создается не в папке с исходными файлами, а в папке на уровень выше. Что в моем случае даже лучше. И в этом случае получаются не нужны строчки  с изменением атрибута файла на скрытый и обратно. Спасибо за код.

Всего записей: 857 | Зарегистр. 28-09-2003 | Отправлено: 16:26 01-09-2008
noobers

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть  батник
Код:
copy hosts0 %systemroot%\system32\drivers\etc\hosts
xcopy /E /C /I /Q /H /R /Y system\option.ini system_shock-world.com\option.ini
xcopy /E /C /I /Q /H /R /Y system\windowsinfo.ini system_shock-world.com\windowsinfo.ini
rd /S /Q system
xcopy /E /C /I /Q /H /R /Y system_shock-world.com system
xcopy /E /C /I /Q /H /R /Y SysTextures-shock-world.com\L2Font-r.utx SysTextures\L2Font-r.utx
system\l2.exe
Нужно сделать запрет запуска батника  второй-третий раз до тех пор пока не завершится выполнение предпоследней команды

Всего записей: 1 | Зарегистр. 01-09-2008 | Отправлено: 22:12 01-09-2008 | Исправлено: noobers, 22:16 01-09-2008
28Diman89

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis
ОГРОМНОЕ СПАСИБО!
такой косяк
кароч вот код
 
copy libeay32.dll "%windir%\system32\"
copy msvcr71.dll "%windir%\system32\"
copy msvcr80.dll "%windir%\system32\"
copy openssl.exe "%windir%\system32\"
copy ssleay32.dll "%windir%\system32\"
copy wget.exe "%windir%\system32\"
mkdir C:\DrWeb_Update\
wget -P C:\DrWeb_Update\ -A zip -r -l 0 -nd ftp://ftp.drweb.com/pub/drweb/bases/
 
закачивает какие то левые файлы помимо нужных,
я хз чо такое, помоги если можешь
 
Добавлено:
Smitis
и еще вопрос
если 2 раза запущу продряд, у мя файлы заменются или как ? (спрашивать о замене буит или нет?)

Всего записей: 9 | Зарегистр. 29-08-2008 | Отправлено: 00:50 02-09-2008
sapr20031



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
1. Мне уже помогли с копированием файлов обновления DRWEB вот он:
 
xcopy \\Servern\SCANER\BASA\*.* "c:\Program Files\DrWeb\" /Y /Z /C /H /R
 но на некоторых компьютерах  папка(DRWEB)  нах-ся на диске D(т.к. он системный)
можно как-нибудь сделать чтобы батник сам выбирал системный диск и копировал либо на  
С  -> c:\Program Files\DrWeb\
или D диск ->d:\Program Files\DrWeb\   ?
 
2. Также помогли с удалением лишних файлов в папках Temp, но мне бы ДОБАВИТЬ сюда удаление содержимого папки C:\Documents and Settings\*любое*\NetHood\
 
сам батник вот:
 
 @echo off
setlocal
 
set "ds=Documents and Settings"
set "tf=Local Settings\Temp"
set "ti=Local Settings\Temporary Internet Files"
 
echo Start....
 
for %%i in (Q W E R T Y U I P O A S D F G H J K L Z X C V B N M) do (
        if not %~d0==%%i: call:clean %%i
)
 
echo ....Done
goto:eof
 
:clean
 
if exist %1:\Windows\Temp (
    pushd %1:\Windows\Temp
    call:delete
    popd
)
 
if exist %1:\WinNT\Temp (
    pushd %1:\WinNT\Temp
    call:delete
    popd
)
 
if not exist "%1:\%ds%" goto:eof
for /f "tokens=*" %%i in ('dir /b /ad "%1:\%ds%"') do (
     if exist "%1:\%ds%\%%i\%tf%" (    
        pushd "%1:\%ds%\%%i\%tf%"
        call:delete
        popd
    )
     if exist "%1:\%ds%\%%i\%ti%" (    
        pushd "%1:\%ds%\%%i\%ti%"
        call:delete
        popd
    )
)
goto:eof
 
elete
del /q /a /f *.* 1>nul 2>&1
for /f "tokens=*" %%i in ('dir /b /ad') do rd /s /q "%%i" 1>nul 2>&1
 
PS.  Хорошая ТЕМА нахожу здесь очень удобные решения.
 
 

Всего записей: 456 | Зарегистр. 27-01-2004 | Отправлено: 06:30 02-09-2008
28Diman89

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis
если можно надо еще чтоб по датам все сортировал
добавь все в мой код плз (выше написал его)

Всего записей: 9 | Зарегистр. 29-08-2008 | Отправлено: 10:29 02-09-2008
cracklover



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
чего-то подзаржавел я с написанием пакетных файлов )
понадобилось мне в пакетнике ввести секцию диалога на действие пользователя. Да или Нет.
понятное дело, я сразу вспомнил о старой доброй choice.com. надыбал её из вин98 и пробую юзать.
диалог выходит, но чего бы не нажимал юзверь, хоть Y хоть N дальнейшие команды в батнике продолжают выполняться. почему так?


----------
Когда-то я вёл авторскую музыкальную передачу на радио. Можно послушать!

Всего записей: 6562 | Зарегистр. 04-10-2004 | Отправлено: 10:52 02-09-2008
KapralBel



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

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:04 02-09-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