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

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

Автор: root1976
Дата сообщения: 02.11.2007 10:15
[q][/q]
Огромное спасибо!!!!
Очень помогли!!!!
Автор: Kotik79
Дата сообщения: 02.11.2007 10:33
Помогите написать скрипт.
каждый день на 150 машинах запускается программа, которая делает отчет с именем сегодняшняядата_имякомпа.txt. надо написать скрипт, чтобы программа не запускалась, если отчет от этого компьютера уже делался на этой неделе. то есть если есть файл с именем (вчерашняядата/позавчерашняя/позапозавчерашняя..... )_имякомпа.тхт
Автор: KapralBel
Дата сообщения: 02.11.2007 11:07
Kotik79

Код: @Echo Off
Echo wscript.echo DatePart("WW",now()) >tmp.vbs
For /F %%a in ('tmp.vbs') Do Set ww=%%a
Set /A ww1=ww-1
Del tmp.vbs /q>Nul
Echo. >C:\%ww1%.flg
Attrib -h C:\%ww1%.flg>Nul
Del C:\%ww1%.flg /q/f >Nul
If Exist C:\%ww%.flg GoTo :working
Echo. >C:\%ww%.flg
Attrib +h C:\%ww%.flg

Echo Запуск нужной программы
GoTo :EOF

:Working
Echo Утилита на этой неделе уже работала
GoTo :EOF
Автор: GORA2
Дата сообщения: 02.11.2007 11:17
Очередная задача:
По FTP захожу на сайт в Total Commander-е, вижу папки и файлы.
Нужно узнать размер папок и суммарный размер всех папок и файлов каталога в котором я нахожусь.
Можно ли это сделать и как?
Автор: whitecherep
Дата сообщения: 03.11.2007 15:29
Несколько задач, можно в одном батнике, а можно и на каждую отдельно.

1. Нужен батник, который бы сканировал и удалял без возврата и без подтверждения все mp3 на диске, длинее 8:30 (Длительность композиции).

2. Нужен батник, который бы сканировал и удалял без возврата и без подтверждения все пустые папки на диске

3. Нужен батник, который бы сканировал и удалял без возврата и без подтверждения все jpg, txt, gif и другие заданные в батнике файлы.


Удаление пускай проводится на диске, на котором находится батник, или начиная с каталога в котором он находится.
Если можно поподробнее пожалуйста (в этом деле новичок). Поиском пользовался, но просто не реально найти среди более 300 страниц решенную, подходящую тебе задачу.

Заранее благодарен
Автор: yurkesha
Дата сообщения: 03.11.2007 15:54
whitecherep
на 3-й вопрос:

Код: @echo off
FOR /r %%i IN (*.txt *.jpg *.gif) DO del /q /f "%%i"
Автор: Maza Faka
Дата сообщения: 03.11.2007 16:25
whitecherep

1.
Цитата:
удалял без возврата и без подтверждения все mp3 на диске, длинее 8:30 (Длительность композиции)

Если есть консольная утилита определяющая продолжительность звучания mp3 файла, то утилиту в студию, поможем прикрутить к батнику

2.
Цитата:
удалял без возврата и без подтверждения все пустые папки на диске

Вариант №1 - красивый

Код:
@echo off
chcp 1251> nul

for /f "tokens=1 delims=" %%d in ('dir /s /b /a:d c:\') do call :Empty "%%d"
pause
goto :eof

:Empty
set empty=
dir %1 /a | find " 2 папок" > nul && set empty=true
dir %1 /a | find " 0 файлов" > nul || set empty=false
if "%empty%"=="true" rd /s /q %1
Автор: Elroir
Дата сообщения: 03.11.2007 16:47
Maza Faka

Цитата:
Вариант №1 - красивый
Вариант №2 - простой

Я могу ошибаться, но в обоих вариантах недочет - если в пустой (от файлов) директории, есть такая же пустая поддериктория (или ветка пустых поддиректорий), то оба варианта удалят эту поддиректорию (или самую последнюю в ветке), а саму директорию не удалят.
И "dir /s" и "for /r" идут по файловой системе сверху вниз (вглубь), а в данном случае нужно идти снизу вверх.
Правда whitecherep не уточнил, что делать в случае подобной структуры директорий
Автор: yurkesha
Дата сообщения: 03.11.2007 17:13
Maza Faka
а тебе не кажется что в
Код: @echo off
for /r c:\ %%a in (*.txt *.jpg *.gif) do del /f /q /a:h "%%a"
Автор: 01MDM
Дата сообщения: 03.11.2007 17:52
Maza Faka


Цитата:
консольная утилита определяющая продолжительность звучания mp3 файла


Неплохая утилита для редактирования тегов, определяет время звучания в т.ч
http://www.synthetic-soul.co.uk/files/tag_2.0.52.zip
Автор: 01MDM
Дата сообщения: 03.11.2007 20:28
whitecherep
В общем с локальным диском (40гб данных) вылетел, с каталогом D:\Music (4.5гб) справился за 3 минуты. Так же могут быть проблемы если длительность звучания больше часа.

Код:
@ECHO OFF

cd.>list.txt

tag "d:\Music" --recursive --tofilen list.txt

echo. >file.txt
echo. >len.txt

for /f "delims=" %%i in ('type list.txt ^| findstr /i ".mp3"') do (echo %%i >>file.txt)
for /f "tokens=8" %%i in ('type list.txt ^| findstr "playtime"') do (
set "len=%%i"
call:len1
)
set /a count=1
:next
for /f "skip=%count% delims=" %%i in ('type file.txt') do (
set "file=%%i"
for /f "skip=%count%" %%i in ('type len.txt') do (
set "len=%%i"
call:len2
set /a count+=1
goto:next
)
)

del /q len.txt
del /q file.txt
del /q list.txt

goto:eof

:len1
if %len:~0,1% equ 0 set len=%len:~1%
echo %len% >>len.txt
goto:eof

:len2
if %len::=% geq 830 (echo "%file%" >>res.txt)
Автор: Nagual
Дата сообщения: 04.11.2007 02:32
GORA2
[more=оффтоп]берешь ftpdrive, монтируешь свой ресурс им на диск, дальше дело техники
можешь просто в тотале посмотреть размер папки или рисовать сценарий, можно использовать различные плагины для отображени и записи информации[/more]
Автор: Maza Faka
Дата сообщения: 04.11.2007 07:00
yurkesha

Цитата:
/a:h является лишним? Попробуй удалить нескрытый файл

Да ты прав, я поторопился, не проверил несколько раз.
Автор: tommak
Дата сообщения: 04.11.2007 12:37
Всем привет. Нужен батник который: Находит на диске файл самого большого размера и изменяет его аттрибут на "Скрытый"
Автор: AlessTO
Дата сообщения: 04.11.2007 13:43
01MDM
"tag не является командой или исполняемым файлом."
Значит ли это что необходимо иметь в каталоге тулзу?
Автор: 01MDM
Дата сообщения: 04.11.2007 14:10
AlessTO
помести батник в каталог с тулзой или в батнике пропиши путь к ней. Или положи тулзу куда-нибудь в %PATH%.
набери команду set path и посмотри.
Автор: king_stiven
Дата сообщения: 04.11.2007 14:18
tommak
Помести батник в корень диска. Если в именах файлов есть воскл. знаки, этот батник не годится.

Код: @echo off
setlocal enabledelayedexpansion
for /r %%e in (.) do call :wer "%%e"
ATTRIB +H "!big_file!"
goto :eof
:wer
for /f "tokens=*" %%c in ('dir %1 /b /O:-s /s /a:-d') do (
if %%~zc GTR !size! (
set big_file=%%c
set size=%%~zc
)
goto werty
)
:werty
Автор: tommak
Дата сообщения: 04.11.2007 14:52
Спасибо, восклицательных знаков не будет и нету. Батник работает.
Автор: 01MDM
Дата сообщения: 04.11.2007 15:32
tommak
Еще как вариант

Код:
@echo off
setlocal enabledelayedexpansion
set size=0
for /f "delims=" %%i in ('dir /b /s D:\') do (
if %%~zi geq !size! set "file=%%~fi" && set size=%%~zi
)
attrib +h "%file%"
Автор: Elroir
Дата сообщения: 04.11.2007 18:43
01MDM
И в том и в другом коде все будет нормально, пока не найдется файл больше чем 2147483647 байт. В этом случае, ответ будет неверным.
Возможным решением будет разделять оба сравниваемых числа на первые 9 символов (справа налево) и оставшиеся и сравнивать поочередно обе части.
Автор: king_stiven
Дата сообщения: 04.11.2007 20:29
Elroir
Проще будет прикрутить утилиту, например du из GNU utilities for Win32, чтобы показывала размер в килобайтах. Файла более 2 терабайт точно не попадётся.)
Автор: yurkesha
Дата сообщения: 04.11.2007 20:30
Ну чтоб не сравнивать по частям можно заюзать такой код:
Код: @echo off
if exist 11111.txt del /f /q 11111.txt
setlocal enabledelayedexpansion
for /r %1 %%i in (*) do set "zzzzz=z000000000000000%%~zi"&set zzzzz=!zzzzz:~-15!&echo !zzzzz! : %%i>>11111.txt
sort 11111.txt /o 11111.txt
for /f "tokens=1* delims=: " %%i in (11111.txt) do set "big_file=%%j"
attrib +h "%big_file%"
if exist 11111.txt del /f /q 11111.txt
Автор: king_stiven
Дата сообщения: 04.11.2007 20:53
Elroir
Только что проверил на файлах более 4 гигов, всё работает.
Автор: yurkesha
Дата сообщения: 04.11.2007 21:27
king_stiven -
Действительно работает! Проверено на файлах размером более 20 гигов.
Ограничение по видимому срабатывает только при вычислениях через SET /A
Автор: 01MDM
Дата сообщения: 04.11.2007 21:50
Elroir
У меня самый большой файл ровно 2Гб. Он как раз показал такое значение (2 147 483 647)
Автор: king_stiven
Дата сообщения: 04.11.2007 22:11
yurkesha
Нет, вроде не работает. Короче, спать надо.
Автор: 01MDM
Дата сообщения: 04.11.2007 22:19
Только что попробовал, создал файл 4+ Гб файл, показывает полную длину и определяется как самый большой.
Автор: yurkesha
Дата сообщения: 04.11.2007 22:31
king_stiven - твой код точно работает! Я натравлиал его на папку с видео где максимальный размер файла составляет 25,4 ГБ (27 379 406 708 байт) - все отработало корректно! Но если кому мало такого объема - пусть использует тот код что привел я - сомневаюсь чтоб кого-либо не устроило ограниечение порядка 100 терабайт(если все-таки кому надо - увеличиваем число ноликов до нужного и ~-15 меняем на число нулей...).
Автор: king_stiven
Дата сообщения: 04.11.2007 23:31
yurkesha
У меня барахлит, вот по совету Elroir

Код: @echo off
setlocal enabledelayedexpansion
for /r %%e in (.) do call :wer "%%e"
ATTRIB +H "!big_file!"
goto :eof
:wer
for /f "tokens=*" %%c in ('dir %1 /b /o:-s /s /a:-d') do (
if %%~zc LEQ 2147483646 (
if %%~zc GTR !size! (
set big_file=%%c
set size=%%~zc
)
goto werty
) else (
set j=%%~zc
set j1=!j:~0,-9!
set j2=!j:~-9!
if !j1!=="!size:~0,-9!" (
if !j2! GTR "!size:~-9!" (
set big_file=%%c
set size=%%~zc
)
goto werty
)
if !j1! GTR "!size:~0,-9!" (
set big_file=%%c
set size=%%~zc
)
goto werty
)
)
:werty
Автор: Elroir
Дата сообщения: 05.11.2007 00:24
king_stiven
yurkesha
01MDM
Насчет работает-не работает:
if 2147483647 GTR 2147483646 echo greater - работает (2^31-1 и 2^31-2)
if 2147483648 GTR 2147483647 echo greater - не работает (2^31 и 2^31-1)
if 2147483648 GTR 1147483647 echo greater - работает (2^31 и 2^30)
if 2147483648 GTR 1 echo greater - работает (2^31 и 1)
if 4294967296 GTR 2147483648 echo greater - не работает (2^32 и 2^31)
Все это на WinXP 32-bit. Я не знаю, меняется ли что-нибудь, если бежит 64-битная OS.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: Доступ к реестру через RegEdit?


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