Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 3

Автор: FXPELIVE
Дата сообщения: 05.05.2007 04:06
Elroir
Тоесть надо юзать ключ /e а не /s /e так?
Автор: Elroir
Дата сообщения: 05.05.2007 04:10
FXPELIVE
Можно отдельно /e, можно отдельно /s. Вместе не имеет смысла. /s - копировать все директории, исключая пустые, /e - копировать все директории, включая пустые.
Автор: FXPELIVE
Дата сообщения: 05.05.2007 04:31
Elroir
Понятно. Спасибо.

А то во встроенной справке написано такое:
Цитата:
/S Копирует все папки и подпапки, кроме пустых.
/E Копирует все папки и подпапки, включая пустые.
То же самое, что и /S /E. Можно использовать для изменения /T.
/V Проверяет каждый новый файл.
Автор: ATS2000
Дата сообщения: 05.05.2007 05:32

Переехал из темы "Wget для Windows" с такой задачей:

имеется хост, с которого по протоколу HTTP нужно периодически выкачивать тлько новые или изменённые файлы c именами вида baseMMDD.rar, где MM-месяц, DD-число. Простой скачки файлов добился, с помощью комрада igor_andreev.
Но вся проблема в том, что каждый раз скачиваются все подряд файлы, потому что хост не умеет отдавать дату последнего изменения файлов и присваивает им текущую дату.
Но в то же время в файл FOLDER1.TXT напротив каждого файла пишется дата и время его последнего изменения и размер.

Вот сам скрипт:


Цитата:
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
wget -N --force-html -P C:\Temp\
--base=http://info.board.ru/ --http-user="user" --http-passwd="pass" -i C:\Temp\FILES1.TXT


Вот что пишется в FOLDER1.TXT

[more] <img src="/images2/folder_open.gif" alt='root dir'> Folder1/<table border=0><tr align="center"><td></td><td>Наименование</td><td> </td><td>Дата/время</td><td> </td><td>Размер</td></tr><tr align="left"><td colspan="6"><hr></td></tr><td width=30><img src="/images2/file.gif" alt="[FILE]"></td><td><a href='auth.php?item=Folder1/base0428.RAR'>base0428.RAR</a></td><td> - </td><td>28-04-2007 09:33:22</td><td> - </td><td>1,61 Мбайт</td></tr><td width=30><img src="/images2/file.gif" alt="[FILE]"></td><td><a href='auth.php?item=Folder1/base0423.RAR'>base0423.RAR</a></td><td> - </td><td>23-04-2007 09:55:08</td><td> - </td><td>1,71 Мбайт</td></tr><td width=30><img src="/images2/file.gif" alt="[FILE]"></td><td><a href='auth.php?item=Folder1/base0416.RAR'>base0416.RAR</a></td><td> - </td><td>16-04-2007 09:42:47</td><td> - </td><td>1,50 Мбайт</td></tr><td width=30><img src="/images2/file.gif" alt="[FILE]"></td><td><a href='auth.php?item=Folder1/base0409.RAR'>base0409.RAR</a></td><td> - </td><td>09-04-2007 09:43:05</td><td> - </td><td>852,07 Кбайт</td></tr><td width=30><img src="/images2/file.gif" alt="[FILE]"></td><td><a href='auth.php?item=Folder1/base0402.RAR'>base0402.RAR</a></td><td> - </td><td>02-04-2007 09:36:38</td><td> - </td><td>987,13 Кбайт</td></tr><td width=30><img src="/images2/file.gif" alt="[FILE]"></td><td><a href='auth.php?item=Folder1/base0326.RAR'>base0326.RAR</a></td><td> - </td><td>26-03-2007 10:07:41</td><td> - </td><td>1,16 Мбайт</td></tr><td width=30><img src="/images2/file.gif" alt="[FILE]"></td><td><a href='auth.php?item=Folder1/base0319.RAR'>base0319.RAR</a></td><td> - </td><td>19-03-2007 09:48:29</td><td> - </td><td>1,20 Мбайт</td></tr><td width=30><img src="/images2/file.gif" alt="[FILE]"></td><td><a href='auth.php?item=Folder1/base0312.RAR'>base0312.RAR</a></td><td> - </td><td>12-03-2007 09:42:46</td><td> - </td><td>1,38 Мбайт</td></tr><td width=30><img src="/images2/file.gif" alt="[FILE]"></td><td><a href='auth.php?item=Folder1/base0305.RAR'>base0305.RAR</a></td><td> - </td><td>05-03-2007 09:48:48</td><td> - </td><td>1,28 Мбайт</td></tr><tr align="left"><td colspan="6"><hr></td></tr></table>[/more]



Вот что пишется в файл FILES1.TXT

[more] <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>
<td><a href='auth.php?item=FOLDER1/base0409.RAR'>base0409.RAR</a>
<td><a href='auth.php?item=FOLDER1/base0402.RAR'>base0402.RAR</a>
<td><a href='auth.php?item=FOLDER1/base0326.RAR'>base0326.RAR</a>
<td><a href='auth.php?item=FOLDER1/base0319.RAR'>base0319.RAR</a>
<td><a href='auth.php?item=FOLDER1/base0312.RAR'>base0312.RAR</a>
<td><a href='auth.php?item=FOLDER1/base0305.RAR'>base0305.RAR</a>[/more]

Помогите решить задачу по скачке только новых или измененных файлов. Для этого надо как-то разобрать FOLDER1.TXT и цепляться за дату и время каждого файла, которые туда пишутся.
Автор: MegaSin
Дата сообщения: 05.05.2007 07:58
Elroir
у некоторых банально нет файла cscript.exe
Автор: Utasc
Дата сообщения: 05.05.2007 15:57
Можно за 3 часа записать в блокнот все 6-ти, 7,8,9,10, значниє числа и.или комбинации лат букв?

невозможная задача: заменить (Ctrl+BackSpase) на абзац
Автор: NIKZZZZ
Дата сообщения: 05.05.2007 16:23
Utasc

Цитата:
заменить (Ctrl+BackSpase) на абзац

В шапке - Замена текста в файлах.

Цитата:
Можно за 3 часа записать в блокнот все 6-ти, 7,8,9,10

За 3 нельзя, а вот зтак лет за сто или более вполне, если винта хватит ...


Автор: Utasc
Дата сообщения: 05.05.2007 16:31
а на что заменить? тоесть как поставить абзац. sbs2 не пройдет
Автор: NIKZZZZ
Дата сообщения: 05.05.2007 16:38
Utasc
Описание sbs2, по-моему его нет в шапке.
[more=SBS2.com]=============================================================
= SBS2.COM - By Herbert Kleebauer =
=============================================================

Usage: sbs2.com NUMBER "STRING1" "STRING2" <infile >outfile

infile and outfile must not be the same file!

Substitutes the NUMBER ocurrence of STRING1 in infile by
STRING2 and writes the result to outfile

You can include any character in STRING1/2 by using its
hex value (e.g. $0d for <CR> or $1a for EOF)

If NUMBER = 0 all STRING1 are substituted by STRING2

If an error is detected or nothing is substituted, erorrlevel=0
replace the original file only if errorlevel>=1 (=number of
substitutions).

Instead of the double quotes (") you can also use single quotes (')
with a different meaning for string2:
"string2" : normal substitution
'string2" : before substitution the output file is rewinded
"string2' : after substitution the outputfile is closed

some examples:

------------------------------------------------------
Substitutes the 2. occurrence of user by Susan
------------------------------------------------------
sbs2.com 2 "user" "Susan" <%1 >_._
if errorlevel 1 copy _._ %1
del _._

------------------------------------------------------
Converts dos textfiles to unix textfiles
------------------------------------------------------
sbs2.com 0 "$0d" "" <%1 >_._
if errorlevel 1 copy _._ %1
del _._

------------------------------------------------------
Converts unix textfiles to dos textfiles
------------------------------------------------------
sbs2.com 0 "$0a" "$0d$0a" <%1 >_._
if errorlevel 1 copy _._ %1
del _._

------------------------------------------------------
echo without CRLF
------------------------------------------------------
echo set a=|sbs2.com 0 "$0d$0a" "" >_.bat


------------------------------------------------------
Remove trailing blanks from all lines
------------------------------------------------------
:start
sbs2.com 0 " $0d" "$0d" <%1 >_._
if not errorlevel 1 goto ende
copy _._ %1
goto start
:ende
del _._


------------------------------------------------------
Remove all single CR LF (ascii text file -> WORD)
------------------------------------------------------
sbs2.com 0 "$0d$0a$0d$0a" "$0a" <%1 >_._
if errorlevel 1 copy _._ %1
sbs2.com 0 "$0d$0a" "" <%1 >_._
if errorlevel 1 copy _._ %1
sbs2.com 0 "$0a" "$0d$0a" <%1 >_._
if errorlevel 1 copy _._ %1
del _._

------------------------------------------------------
Extract line 5-9 from a text file
------------------------------------------------------
sbs2.com 4 "$0d$0a" '" <%1 >_._
if errorlevel 1 copy _._ %1
sbs2.com 5 "$0d$0a" "$0d$0a' <%1 >_._
if errorlevel 1 copy _._ %1

------------------------------------------------------
Source code: see older posting in alt.msdos.batch
------------------------------------------------------

=============================================================
Sample batch file to show how to use the code
=============================================================

@echo off

echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>sbs2.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU!WvX0GwUY Wv;ovBX2Gv0ExGIuht6>>sbs2.com
echo ?@}IKuNWpe~Fpe?FNHlF?wGMECIQqo{Ox{T?kPv@jeoSeIlRFD@{AyEKj@>>sbs2.com
echo iqe~1NeAyR?mHAG~BGRgB{~H?o~TsdgCYqe?HR~upkpBG?~slJBCyA?@xA>>sbs2.com
echo LZp{xq`Cs?H[C_vHDyB?Hos@QslFA@wQ~~x}viH}`LYNBGyA?@xAB?sUq`>>sbs2.com
echo LRy@PwtCYQEuFK@A~BxPtDss@fFqjVmzD@qBEOEenU?`eHHeBCMs?FExep>>sbs2.com
echo LHsPBGyA?@xAunjzA}EKNs@CA?wQpQpKLBHv?s`WJ`LRCYyIWMJaejCksl>>sbs2.com
echo H[GyFGhHBwHZjjHeoFasuFUJeHeB?OsQH[xeHCPvqFj@oq@eNc?~}Nu??O>>sbs2.com
echo ~oEwoAjBKs?Zp`LBzHQzyEFrAWAG{EFrAqAGYwHTECIQ{coKIsaCsf{Oe~>>sbs2.com
echo CK}Ayre~CNFA{rAyEKFACrA{EKGAjbA}eKGSjNMtQFtc{OAyDGFj?{FDGQ>>sbs2.com
echo KAjNVk_OCAx@e?f{o?CosI}1EGizhljJ~H1ZeG}JBA~rACBMDGjjDG@g0>>sbs2.com

sbs2.com 0 "Old String" "New String" < infile > outfile
del sbs2.com
[/more]
Автор: Elroir
Дата сообщения: 05.05.2007 16:41
Utasc

Цитата:
Можно за 3 часа записать в блокнот все 6-ти, 7,8,9,10, значниє числа и.или комбинации лат букв?

В качестве иллюстрации ответа NIKZZZZ:
Вывод всех 6-значных чисел занимает более 20 минут и около 6 мегабайт.
Вывод всех 7-значных - (умножаем на 10) 200 минут, 60 Мб
Вывод всех 8-значных - (умножаем на 10) 2000 минут, 600 Мб
Вывод всех 9-значных - (умножаем на 10) 20000 минут, 6000 Мб
Вывод всех 10-значных - (умножаем на 10) 200000 минут, 60000 Мб
Таким образом - получается около полугода
С буквами вообще завал - 6 символов = 6^26 комбинаций

Добавлено:
Черт - ошибся. Не 6^26, а 26^6
Автор: Nagual
Дата сообщения: 05.05.2007 22:47
а вот такую задачу не могу решить
есть файл, например, Desktop.ini с атрибутами ahs
необходимо его скопировать в ту же папку по именем, скажем %name%_
есть может у кого какие идеи?
Автор: Elroir
Дата сообщения: 05.05.2007 22:53
Nagual

Код:
attrib -h -s Desktop.ini
copy Desktop.ini %name%_
attrib +h +s Desktop.ini
Автор: Nagual
Дата сообщения: 05.05.2007 23:07
Elroir
вариант не совсем универсальный
нужен бэкап файла с произвольными атрибутами как можно более коротким
типом исполнения
дело в том, что этот файл может быть с любым набором атрибутов
поэтому предпочтительнее было бы заюзать команду xcopy
но она злодейка выдает вот что:
Невозможно выполнить циклическое копирование
Скопировано файлов: 0.
Может есть какой нить способ это обойти?
Автор: Elroir
Дата сообщения: 05.05.2007 23:13
Nagual

Цитата:
вариант не совсем универсальный

Какой вопрос - такой и ответ.
Как запускается xcopy? Какое название у файла, что находутся в %name%_?
Автор: Nagual
Дата сообщения: 05.05.2007 23:23
xcopy запускается одной командой примерно так
cmd /c title Копия... &xcopy/y/e/c/h/r/k/g/z "%1" "%1_" &pause

Добавлено:
название, размер и атрибуты у файла мгут быть любыми
Автор: Elroir
Дата сообщения: 05.05.2007 23:32
Nagual
Зачем используется ключ /е? Именно из-за него происходит ошибка.
Автор: Nagual
Дата сообщения: 05.05.2007 23:44
Elroir
согласен, лишку дал, команду брал из копирования папок
теперь такая фигня вылазит:
Что означает %1:
имя файла или каталога
(F = файл, D = каталог)?
при нажатии на F копирование все таки происходит как надо
как бы сделать так, чтобы не нажимать ничего?
Автор: Elroir
Дата сообщения: 05.05.2007 23:53
Nagual

Код:
cmd /c title Копия... &(echo f | xcopy/y/c/h/r/k/g/z "%1" "%1_" )&pause
Автор: NIKZZZZ
Дата сообщения: 06.05.2007 00:04
Nagual

Цитата:
Что означает %1:
имя файла или каталога
(F = файл, D = каталог)?
при нажатии на F копирование все таки происходит как надо
как бы сделать так, чтобы не нажимать ничего?

Два варианта. Чтобы xcopy знала, что это каталог, необходимо его закончить символом "\".
Второй - ответить из файла xcopy xxxxxx xxxxx <f.txt, где f.txt - файл с ответом. ("D")
Возможно , пройдет (???) echo D|xcopy xxxxxx xxxxx


Автор: Nagual
Дата сообщения: 06.05.2007 00:34
Elroir
NIKZZZZ
спс задача решена, метод эла предпочтительнее оказался
Автор: NIKZZZZ
Дата сообщения: 06.05.2007 03:20
Elroir
А как тебе такая задача:
Быстро создать файл нужного размера (например 100 Gb). Содержимое не принципиально.
Зачем?
1.Зарезервировать себе место на чужом (или, что хуже своем!!!) диске.
2.Использовать его для личных целей.

Автор: Nagual
Дата сообщения: 06.05.2007 03:33
NIKZZZZ
Использование: fsutil file createnew <файл> <длина>
Пример: fsutil file createnew C:\test.txt 1000
Автор: Elroir
Дата сообщения: 06.05.2007 03:43
NIKZZZZ
Я для таких целей пользовался утилитой fakefile.com (лежит у меня с 1997 года).
Работатет медленно - на 100Гб я ее не проверял. У тебя есть какое-то другое решение (не fsutil предложенный Nagual)?

Nagual
Круто! Я не знал, что fsutil такое умеет. Причем создает мгновенно, вне зависимости от размера.
Автор: Nagual
Дата сообщения: 06.05.2007 03:54
Elroir, а я то думал, ты знаешь все
Автор: NIKZZZZ
Дата сообщения: 06.05.2007 14:24
Nagual
Большое спасибо за наводку. Создал за милисекунды файл 100 Gb. До этого пользовался стороними, очень удобно.
Автор: Elroir
Дата сообщения: 06.05.2007 14:31
Nagual

Цитата:
а я то думал, ты знаешь все

Жаль, конечно, разочаровывать, но даже на солнце бывают пятна
Постараюсь исправиться

NIKZZZZ
Так чем ты пользовался?
Автор: NIKZZZZ
Дата сообщения: 06.05.2007 14:50
Elroir

Цитата:
Так чем ты пользовался?

qemu-img.exe
из пакета qEmu
К стати, такой файлик удобно использовать как образ диска.
Автор: Tjomich
Дата сообщения: 06.05.2007 19:27
Доброго времени суток. Такая проблема, нужно написать батник, который перезванивал бы adsl модем каждые 3 секунды пока не сменится, динамически выделяемый провайдером, IP...
Мне ещё не приходилось сталкиватся с bat файлами, команду "rasdial" для самого перезванивания я нашел, а вот как организовать проверку того сменился ip или нет придумать не могу... Помогите, пожалуйста...
Автор: 01MDM
Дата сообщения: 06.05.2007 19:27
NIKZZZZ

Это относится к qEmu или fsutil createnew?
Можно поподробнее:


Цитата:
К стати, такой файлик удобно использовать как образ диска.


Всмысле смонтировать его через чего? Mountvol монтирует отдельные файлы как диски? Или речь об "iso"образах?

Можно ли смонтировать образ диска как в лине, mount -loop...


Автор: Elroir
Дата сообщения: 06.05.2007 19:38
Tjomich
Что выдает команда "ipconfig", когда подключение есть и когда оно разорвано?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Автозагрузка терминальной сессии


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.