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

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

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

Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 109 110 111 112 113 114 115 116 117 118

   

KLASS



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

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

Всего записей: 11122 | Зарегистр. 12-10-2001 | Отправлено: 04:28 24-09-2002 | Исправлено: Elroir, 19:35 11-09-2007
ATS2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Камрады, прошу помочь если не сложно.
 
Задача следующая:
 
 
Имеется хост, с которого по протоколу HTTP нужно периодически выкачивать только  новые или изменённые файлы c именами вида baseMMDD.rar, где MM-месяц, DD-число. Но вся проблема в том, что каждый раз скачиваются все подряд файлы, потому что хост не умеет отдавать дату последнего изменения файлов и присваивает им текущую дату.  
Но в то же время в файл FOLDER1.TXT напротив каждого файла пишется дата и время его последнего изменения и размер.  
 
 
 
 
Вот что пишется в FOLDER1.TXT
 
Подробнее...
 
Выход вижу в том чтобы каждый раз разбирать файл FOLDER1.TXT, "вытаскивая" из него дату, время последнего изменения и размер , которые там приписываются каждому файлу, затем проверять, существует ли такой файл и если существует то сравнивать эту дату/время и размер с теми же параметрами существующего файла. И таким образом записать в некоторый файл ссылки на новые файлы и предоставить качалке. Ещё одним выходом, может быть более простым, будет сравнение имён существующих файлов на диске и находящихся на хосте и выкачивать только несуществующие на диске.

Всего записей: 276 | Зарегистр. 21-02-2005 | Отправлено: 12:41 06-05-2007 | Исправлено: ATS2000, 12:42 06-05-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ATS2000
Я взял за основу скрипт, который ты выложил в теме "Задачи на bat-файлах".

Код:
 
set http_proxy=http://192.168.150.1:8080
wget -O C:\Temp\FOLDER1.TXT --http-user="user" --http-passwd="pass" http://info.board.ru/auth.php?item=FOLDER1/
sed "s/<\/td>/\n/g" C:\Temp\FOLDER1.TXT | find /i ".rar" >C:\Temp\FILES1.TXT
del /q C:\Temp\all_files.txt 2>nul
del /q C:\Temp\existing_files.txt 2>nul
del /q C:\Temp\files_to_copy.txt 2>nul
for /f "delims=/>' tokens=4" %%a in (C:\Temp\FILES1.TXT) do echo %%a>>C:\Temp\all_files.txt
dir /b base*.rar>C:\Temp\existing_files.txt
findstr /v /i /g:C:\Temp\existing_files.txt C:\Temp\all_files.txt>C:\Temp\files_to_copy.txt
wget -N --force-html -P C:\Temp\ --base=http://info.board.ru/ --http-user="user" --http-passwd="pass" -i C:\Temp\files_to_copy.txt
 

Код работает по второму варианту - просто сравнивает, какие файлы уже есть на диске,а каких нет. Список файлов с хоста помещается в C:\Temp\all_files.txt, список файлов с диска - в файл C:\Temp\existing_files.txt, а список файлов, которые нужно скачать в C:\Temp\files_to_copy.txt. Предполагается, что base*.rar файлы находятся в текущей директорие. Если нет - надо изменить строчку с командой "dir /b base*.rar", указав где находятся файлы.

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:29 06-05-2007 | Исправлено: Elroir, 17:41 06-05-2007
ATS2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
 
Спасибо! Потестирую, отпишусь.

Всего записей: 276 | Зарегистр. 21-02-2005 | Отправлено: 16:16 06-05-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ATS2000
У меня там ошибка в коде - в строчке "findstr /v /i g:C:\Temp\existing_files.txt .." должно быть "findstr /v /i /g:C:\Temp\existing_files.txt..." - слэш не написал.
P.S. Я исправил код в предыдущем сообщении.

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:38 06-05-2007 | Исправлено: Elroir, 17:43 06-05-2007
ATS2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
 
Возможно ли, чтобы после разбора и выявления несуществующмх файлов на диске, в файл files_to_copy.txt ссылки на файлы для скачивания писались в таком же виде, как и в FILES1.TXT. Это связано с особенностью качалки WGET. Не прокатывает базовый URL в виде  
Цитата:
http://info.board.ru/auth.php?item=FOLDER1/


Всего записей: 276 | Зарегистр. 21-02-2005 | Отправлено: 04:44 07-05-2007 | Исправлено: ATS2000, 04:49 07-05-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ATS2000
Что находится в файле FILES1.TXT у тебя? У меня может быть другая версия sed-a и результат другой.

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 04:49 07-05-2007
ATS2000

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

Elroir
 

Цитата:
<td><a href='auth.php?item=FOLDER1/base0428.RAR'>base0428.RAR</a>  
<td><a href='auth.php?item=FOLDER1/base0423.RAR'>base0423.RAR</a>  
<td><a href='auth.php?item=FOLDER1/base0416.RAR'>base0416.RAR</a>  


Всего записей: 276 | Зарегистр. 21-02-2005 | Отправлено: 04:51 07-05-2007
Elroir



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

Код:
 
set http_proxy=http://192.168.150.1:8080
wget -O C:\Temp\FOLDER1.TXT --http-user="user" --http-passwd="pass" http://info.board.ru/auth.php?item=FOLDER1/
sed "s/<\/td>/\n/g" C:\Temp\FOLDER1.TXT | find /i ".rar" >C:\Temp\FILES1.TXT
del /q C:\Temp\existing_files.txt 2>nul
del /q C:\Temp\files_to_copy.txt 2>nul
dir /b base*.rar>C:\Temp\existing_files.txt
findstr /v /i g:C:\Temp\existing_files.txt C:\Temp\FILES1.txt>C:\Temp\files_to_copy.txt
wget -N --force-html -P C:\Temp\ --base=http://info.board.ru/ --http-user="user" --http-passwd="pass" -i C:\Temp\files_to_copy.txt
 

А тэги HTML ему не мешают?

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 05:02 07-05-2007
ATS2000

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
 
Спасибо! Работает.  
 
HTML-тэги не мешают. Для их обработки специально указывается параметр
Цитата:
--force-html


Всего записей: 276 | Зарегистр. 21-02-2005 | Отправлено: 05:19 07-05-2007
ZloyBehemoth



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не подскажите можно ли из комстроки включить локальную груповую политику?

Всего записей: 242 | Зарегистр. 12-10-2004 | Отправлено: 07:18 07-05-2007
Maza Faka



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

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:47 07-05-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza Faka
Между "локальной группой" и "локальной групповой политикой" все-таки есть разница, не находишь?

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:00 07-05-2007
Maza Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Elroir
ZloyBehemoth
Да, точно, ошибся, сорри...
Так может имелось в виду запустить, тогда так gpedit.msc

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:20 07-05-2007
Goten



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как сделать батник, чтобы при копировании сразу сжималось в WinRARe? \\X\backup\best\ - то что надо копировать, D:\backup_new\ - куда надо копировать. Спасибо.  

Всего записей: 9 | Зарегистр. 07-05-2007 | Отправлено: 15:36 07-05-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Goten
RAR a -r D:\Backup_new\Arhive \\x\backup\Best\*.*

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 15:58 07-05-2007
ASV_2007

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помощь HEEEELP ME !!!
 
как сделать батник, который бы делал выгрузку на фтп ....  
 
хто может помочь ???

Всего записей: 3 | Зарегистр. 10-05-2007 | Отправлено: 14:20 10-05-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASV_2007
ftp -help
Обрати внимание на параметр -s:filename

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:44 10-05-2007
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASV_2007
 
ftp -s:ftp.txt
 
ftp.txt
----------------------
open 192.168.ххх.ххх
логин
пароль
bin
put файл
quit

Всего записей: 2736 | Зарегистр. 16-10-2003 | Отправлено: 15:19 10-05-2007
ASV_2007

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
 
Garrett
 
 
большое при большое спасибааааа !!!  
 
 
*.bat   forever !!!!!

Всего записей: 3 | Зарегистр. 10-05-2007 | Отправлено: 19:16 10-05-2007
8AleX8



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kак в командной строке перенаправить вывод цикла FOR целиком на вход другой команде.
 
Пример:
Никак не могу придумать команду, чтоб получить список файлов с определенным расширением (например PDF) находящихся в текущей директории и ее под-директориях.
С помощью команды
Код:
for /r %D in (.) do dir "%D" /b | find /i ".pdf"
я получаю список всех файлов PDF. Но так-же списку файлов каждой директории предшествует строка типа
Цитата:
C:\путь>dir "C:\путь\."   | find /i ".pdf"
 
Это происходит потому, что команда find /i ".pdf" запускается при каждой итерации цикла по отдельности для каждой из под-директорий.
Как сделать так чтоб команда find /i ".pdf" применялась бы один раз после окончания цикла?

Всего записей: 1813 | Зарегистр. 11-12-2001 | Отправлено: 20:04 10-05-2007 | Исправлено: 8AleX8, 20:11 10-05-2007
   

Страницы: 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 109 110 111 112 113 114 115 116 117 118

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru