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

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

Автор: bomzzz
Дата сообщения: 26.08.2010 17:49
да нет спасибо. я особо в батниках не рублю, а разбираться в чужом коде самое бесполезное дело

Добавлено:
ты его раскомментируй хорошо пока помнишь че там к чему это и потом пригодится и спрашивать удобнее будет.

Добавлено:
FileResizerB.exe 4,50 КБ (4 608 байт)

я вот прогу доделал для обрезания файлов с конца, дописывания в конец нулей, и создавания пустых файлов заданного размера. это для даунлоад мастера в основном, чтоб обрезать недокачанное у сбойных файлов. потом докачивать wget-ом
Автор: king_stiven
Дата сообщения: 26.08.2010 18:10

Цитата:
FileResizerB.exe 4,50 КБ (4 608 байт)

недостаточно места на диске пишет
Автор: bomzzz
Дата сообщения: 26.08.2010 18:11
а ты какой размер указал?
Автор: king_stiven
Дата сообщения: 26.08.2010 18:14
bomzzz
открыл файл 76 байт указал 71
Автор: bomzzz
Дата сообщения: 26.08.2010 18:17
у меня меняет
[more]

[/more]
больше места нету
[more]

[/more]
Добавлено:
king_stiven
спс. точно есть неточность в программе при уменьшении размера щас буду исправлять


Добавлено:
king_stiven
исправил - огромное спасибо

Добавлено:
ну как положено ступил. надо еще обкатывать значит.
Автор: king_stiven
Дата сообщения: 26.08.2010 19:20
bomzzz
А предположим кусок вырезать из файла с 100 байта по 10000 ? Хотя подозреваю есть консольная утиль из юниксывых.
Автор: bomzzz
Дата сообщения: 26.08.2010 19:22
резалка в тотале есть, но на равные кусочки, я тоже о такой утилите задумывался , но реально она не нужна практически ни для чего. хотя клеить файлы приходилося из кусков.

Добавлено:
гыгы еще одну ошибку нашел исправил.

Добавлено:
склеивать порезанные файлы можно батниками - только им имена надо по порядку дать естественно
ECHO OFF
COLOR 9F
CLS
copy /-y /b *.* myfile.rar
pause

Добавлено:
из кусков файлы - а это обычно кины, собираю µTorrent-ом, но конечно торрент файл должен быть для этого. тогда кусок с начала можно скачать с рапеды, кусок с середины с летбита, а склеить и докачать куски муторентом

Добавлено:



эта практическое применение имеет. в даунлоадмастерами уже годами не могут исправить косяк - сбойные закачки. он качает качает, а потом не может кусочек в середине докачать. хотя вроде я накопал что если размер сегмента увеличить то такого не бывает, но достоверно это не подтверждено. а по умолчанию размер сегмента выставлен такой как требуется для модема (64 кбита в сек), а связь давно у людей на мегабиту и больше. так что нет нет люди попадают, качают огромный файл а докачать не могут, вот для этого нужна резалка. ну и вообще в инете нет ни одной нормальной утилиты для создания пустых файлов, все какие то идиотские, кроме моей.

Добавлено:
одна (BigByte) ну вообще начинает создавать кучу файлов по 50 мб, а потом склеивает их в большой. а моя (не ета но такая же) за доли секунды создает самое больше у меня 30 гигов места было
Автор: chel78
Дата сообщения: 26.08.2010 21:20
Привет,
есть 5> файлов file*.ppt
необходимо запускать в режиме презентации поочередно на один час(или на указанный кусок времени). Возможно ли это автоматизировать с помощью батника, либо еще какое решение есть?
Весь смысл в том, что стоит комп, и к нему законекчено 3 здоровенные плазмы, на которые надо шарить презентахи.. а руками постоянно запускать напряжно(не с ноги)...
Автор: bomzzz
Дата сообщения: 26.08.2010 21:39
планировщик заданий с этим не справиться? полно расширенных умных планировщиков
Автор: us0r
Дата сообщения: 27.08.2010 00:36
bomzzz
Да там вопрос-то только в самой возможности... Тем более что задача больше для батнегофф подходит...
Автор: bomzzz
Дата сообщения: 27.08.2010 02:36
для батника это не задача, батники не предназначены для управления по времени. тогда они должны все время висеть в процессах и отжирать кучу ресурсов от компьютера, а точность всегда будет в районе секунды, что конечно не трагично.

Добавлено:
никто не знает, даже не знаю где спросить. виндовс когда и штатно и батниками копирует файлы, всегда на диске оставляется два кластера, думаю что у большинства как и у меня это 8192 байта. в принципе это понятно, интересно почему два, а не один. вот чем в этом вопросе винда руководствуется.
не знаю какой алгоритм это должен обрабатывать. а то у меня получается странный краевой еффект.

Добавлено:
прибавляю к размеру файла 8192 байта (вот кстати это точно некорректно - надо получать размер кластера, но на нтфс маловероятно что кто то сменит исскуственно, и даже если кто то и сменил то 8192 как раз и будет означать 32 кб) и потом отнимаю пустое место, если число меньше нуля - места нету. вот правельна ета или нет?
Автор: lorents
Дата сообщения: 27.08.2010 08:21
Подскажите, пожалуйста, где я ошибся?

Код: for /f "delims=" %%i in ('dir /b /s /a-d Dir4\*.png') do (
    "%~dp0Docs\optipng.exe" -i0 -zw32k -zc9 -zm1-9 -zs0-3 -f0-5 -force "%%~fi" > %temp%\png.log
    copy /b /y "%%~fi" dir5
    for /f "delims==,IDAT tokens=5" %%i in (%temp%\png.log) do (
        set f=%%i
    )
    set f=%f:~1,1%
    del %temp%\png.log
    echo %f%
    if %f% == 3 ("%~dp0Docs\pngout.exe" -ks -f5 "%%~fi")
    if %f% == 4 ("%~dp0Docs\pngout.exe" -ks -f5 "%%~fi") else ("%~dp0Docs\pngout.exe" -ks "%%~fi")
    "%~dp0Docs\deflopt.exe" "%%~fi"
)
Автор: wolf0425
Дата сообщения: 27.08.2010 08:45
lorents,
set f=%f:~1,1%
del %temp%\png.log
echo %f%
if %f% == 3 (
%f% на момент начала цикла не определен, получаем if == 3 (
все сеты внутри цикла на подстановку %переменных% внутри цикла - не влияют

или выноси в call или переходи на !переменные!
Автор: lorents
Дата сообщения: 27.08.2010 09:21
wolf0425
а можно поподробнее, как через переменную?
Автор: BVV63
Дата сообщения: 27.08.2010 09:34
lorents
SetLocal EnableDelayedExpansion
For ...
...
Rem А здесь вместо %Переменная% использовать !Переменная! (% заменить на !)
...
EndLocal

"EndLocal" не обязателен, действие "SetLocal" прекратится с окончанием батника.
Автор: lorents
Дата сообщения: 27.08.2010 09:46
BVV63
Спасибо, вроде разобрался

Код: SetLocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir /b /s /a-d Dir4\*.png') do (
    "%~dp0Docs\optipng.exe" -i0 -zw32k -zc9 -zm1-9 -zs0-3 -f0-5 -force "%%~fi" > %temp%\png.log
    copy /b /y "%%~fi" dir5
    for /f "delims==,IDAT tokens=5" %%i in (%temp%\png.log) do (
        set f=%%i
    )
    set f=!f:~1,1!
    del %temp%\png.log
    if !f! == 3 ("%~dp0Docs\pngout.exe" -ks -f5 "%%~fi")
    if !f! == 4 ("%~dp0Docs\pngout.exe" -ks -f5 "%%~fi") else ("%~dp0Docs\pngout.exe" -ks "%%~fi")
    "%~dp0Docs\deflopt.exe" "%%~fi"
)
Автор: InSe0F
Дата сообщения: 27.08.2010 10:10
извиняюсь за тупой вопрос,
Но как скопировать папку (содержащую файлы и поддиректории) на 4 флешки - сразу?
ну т.е. копируем D:/1 в E:/1, F:/1, I:/1 и т.д
Потыкался туда сюда - что то не получается через copy?
Автор: bomzzz
Дата сообщения: 27.08.2010 10:32
lorents
счетчиком
InSe0F
поочереди XCOPY
Автор: lorents
Дата сообщения: 27.08.2010 11:03
bomzzz
это я понимаю, но не знаю как это сделать. Можно поподробнее как это сделать?
Автор: bomzzz
Дата сообщения: 27.08.2010 11:07
set /a COUNT=0

......

set /a COUNT=%COUNT%+1

..........

так приблизительно, если в синтаксисе не путаюсь

Добавлено:

Цитата:

ECHO OFF
COLOR 9F
CLS
SET /A COUNT=0
SetLocal EnableDelayedExpansion
FOR /R "." %%I IN (*.BAT) DO SET /A COUNT=!COUNT!+1
ECHO %COUNT%
pause

я не уверен что это правельна но это работает. считает количество батников в папке

Добавлено:
пвключая подпапки
Автор: king_stiven
Дата сообщения: 27.08.2010 11:16
InSe0F
for %%i in (a b c d) do xcopy D:/1 %%i:/1 \I
ОСТАЛЬНЫЕ КЛЮЧИ xcopy сам смотри
Автор: lorents
Дата сообщения: 27.08.2010 12:03
bomzzz
пробовал так, но все время COUNT=0

Код: ECHO OFF
COLOR 9F
CLS
SET /A COUNT=0
SetLocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
SET /A COUNT=!COUNT!+1
ECHO %COUNT%
"%~dp0Docs\pngout.exe" -ks "%%~fi"
)
pause
Автор: bomzzz
Дата сообщения: 27.08.2010 12:11

Цитата:
ECHO OFF
COLOR 9F
CLS
SET /A COUNT=0
SetLocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
SET /A COUNT=!COUNT!+1
ECHO !COUNT!
"%~dp0Docs\pngout.exe" -ks "%%~fi"
)
pause

Автор: us0r
Дата сообщения: 27.08.2010 12:13
SetLocal EnableDelayedExpansion
set count=0
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
SET /A COUNT=!COUNT!+1
ECHO %COUNT%
"%~dp0Docs\pngout.exe" -ks "%%~fi"
)
pause
Автор: lorents
Дата сообщения: 27.08.2010 12:23
bomzzz
точно через переменную надо, спасибо
Теперь осталось узнать сколько всего картинок в папке Image

us0r
не работает, пишет, что 0
Автор: bomzzz
Дата сообщения: 27.08.2010 12:26
чтоб теле цикла менялась переменная надо ета SetLocal EnableDelayedExpansion, и восклицательные знаки.

lorents
если у них разные расширения у картинок, то тут можно вроде чрез запятую разные указать
FOR /R "." %%I IN (*.BAT) DO SET /A COUNT=!COUNT!+1
посматри описнаие for
Автор: lorents
Дата сообщения: 27.08.2010 12:35
bomzzz
мне надо узнать, сколько всего картинок в папке Images изначально.
а ты вроде говоришь сколько я уже обработал, или я чего не понял?

еще раз спасибо за помощь
Автор: bomzzz
Дата сообщения: 27.08.2010 12:46
FOR /R "." %%I IN (*.BAT) DO SET /A COUNT=!COUNT!+1 ну вот ета и считает сколько всего файлов определенного типа, а потом после каждой обработки увеличивай счетчик - разница сколько осталось
Автор: lorents
Дата сообщения: 27.08.2010 13:17
Все разобрался.
bomzzz спасибо
Автор: InSe0F
Дата сообщения: 27.08.2010 18:23
king_stiven
спасибо

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


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