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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
 
 
Старая версия первого сообщения

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



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
коллеги, подскажите такую вещь, задача в общем простая - скопировать файлы с компакт-диска на винт, но необходимо 2 условия:
 
1) Тихое копирование - чтобы преподаватель не увидел, что его лекции уплывают )))
2) чтобы скрипт как-то сам себя запускал, или периодически проверял наличие cd в приводе - машина отключена от сети и момент собственно засовывания диска в привод не известен.
 
заранее спасибо

Всего записей: 741 | Зарегистр. 17-07-2005 | Отправлено: 11:56 03-05-2007
Elroir



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

Цитата:
Тихое копирование - чтобы преподаватель не увидел, что его лекции уплывают  

Светодиод на приводе и на системном блоке в любом случае будут мигать при копировании.

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



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
это не важно, у него и так презентации с диска читаются, а комп вообще стоит в стоу, и не видно его.
что посоветуете ?

Всего записей: 741 | Зарегистр. 17-07-2005 | Отправлено: 18:26 03-05-2007
Elroir



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

Код:
 
@echo off
cmdow @ /hid
:try
if exist e:\*.* (
copy откуда_копировать\файлы.abc куда_копировать\
if %errorlevel%==0 exit /b
)
sleep 300
goto try
 

Батник использует две утилиты - cmdow.exe (ссылка в шапке) и sleep.exe (Google->sleep.exe). Первая используется, чтобы скрыть батник, вторая, чтобы сделать паузу в N секунд. В строчке if exist e:\*.* надо поменять e: на букву привода в компьютере, на котором батник будет запущен. В строчке copy... пишешь нужные пути, а в строчке sleep 300 - меняешь 300 секунд паузы между попытками, на то время, которое тебе нужно.
Батник проверяет вставлен ли диск в привод, если да - пытается скопировать файлы. Если получилось - заканчивает работу. Если нет - идет на следующую итерацию.

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



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

Всего записей: 741 | Зарегистр. 17-07-2005 | Отправлено: 22:12 03-05-2007 | Исправлено: PerpleXOR, 22:15 03-05-2007
Elroir



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

Цитата:
он будет копировать все файлы и каталоги, без разбору ?

Нет. В этом варианте надо прописать путь в строчке "copy ... ".
А надо все?

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такой вопрос: можно ли подключиться к инету через командную строку, не создавая при этом подключения?
Заранее спасибо

Всего записей: 95 | Зарегистр. 01-05-2007 | Отправлено: 02:03 04-05-2007
Elroir



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

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



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
да, надо все, причем заранее названия каталогов неизвестны

Всего записей: 741 | Зарегистр. 17-07-2005 | Отправлено: 12:17 04-05-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
PerpleXOR
замени copy на xcopy - она позволяет копировать с подкаталогами

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:28 04-05-2007
Elroir



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

Цитата:
да, надо все, причем заранее названия каталогов неизвестны

Как сказал KapralBel, меняем copy на xcopy:

Код:
xcopy e:\ d:\temp\ /e

Опять же - "е:" меняешь на букву прьивода, "d:\temp" - на тот путь, куда надо скопировать.  

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



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
PerpleXOR
Есть еще одно, если вставить 2 диска подряд и на 2-м есть файлы с теми же именами что и на 1-м - то 1-й вариант будет переписан

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



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

Всего записей: 741 | Зарегистр. 17-07-2005 | Отправлено: 16:12 04-05-2007
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Обновил шапку для 4NT.
В планах - подрихтовать шапку в этой теме и смежной.
+ Небольшая Большая статейка по использованию переменных среды в команджных файлах, ибо ссылка в соседней теме - фигня какая-то (к сожалению, неожиданная командировка сместила мои планы и это будет после праздника). Собрал всё, что можно...

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

Всего записей: 2435 | Зарегистр. 09-02-2003 | Отправлено: 20:39 04-05-2007 | Исправлено: Smitis, 20:41 04-05-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
   

Страницы: 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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru