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

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

Автор: KapralBel
Дата сообщения: 10.12.2005 19:36
morjov
С секундами не удалось
Сделал так - если уже такой файл при переименовывании есть - то в конце добавляется порядковый номер файла
2005_12_31_23_33-123.jpg
2005_12_31_23_33-124.jpg
2005_12_31_23_33-125.jpg



Код:
@Echo Off
Set f_Ext=jpg
Set f_Count=1
For %%a In (*.%f_Ext%) Do @Call :Rena %%a %%~ta
GoTo :EOF

:Rena
Set /a f_Count=%f_Count%+1
Set f_Name=%1
Set f_Date=%2
Set f_Time=%3
Set f_Day=%f_Date:~0,2%
Set f_Month=%f_Date:~3,2%
Set f_Year=%f_Date:~6,4%
Set f_Hour=%f_Time:~0,2%
Set f_Min=%f_Time:~3,2%
Set f_NewName=%f_Year%_%f_Month%_%f_Day%_%f_Hour%_%f_Min%
If Exist %f_NewName%.%f_Ext% Set f_NewName=%f_NewName%-%f_Count%
Ren %f_Name% %f_NewName%.%f_Ext%
GoTo :EOF
Автор: morjov
Дата сообщения: 11.12.2005 12:37
KapralBel, так тоже очень хорошо! СПАСИБО!

ПС. Ещё маленьки вопросик: Можно ли сделать в батнике какую-нибудь задержку (1-2 сек.), т.е. чтобы я мог запускать программы с задержкой.
Автор: hacsoft
Дата сообщения: 11.12.2005 16:19
igor_andreev
Странно, иногда бибикает через спикер, иногда через колонку. Не пойму от чего это зависит. Сделал так:

Код: B8 07 0E CD 10 C3
Автор: Venchik
Дата сообщения: 11.12.2005 16:39
Проветь, есть-ли пинг на айпи. Если есть, то скачать через NETBIOS 3 файла. Если копирование всех трех прошло успешно, то заменить ими 3 файла в папке Х, предварительно переместив заменяемые файлы в папку Y.
Все это надо сделать в свернутом окне...или лучше вообще без окна, если это возможно.
Это реальная задача по обновлению антивируса McAfee по сети из расшаренной папки. Очень удобно будет поставить такой батник в планировщик.
Автор: Smitis
Дата сообщения: 11.12.2005 21:35
hacsoft

Цитата:
был когда-то choice, с его помощью можно было задержку делать, но теперь его нет (а жал, чем он так не угодил).

В вынь 2003 вернули
А так он входил в reskit.
Только стал он 32-разрядным и сменил расширение на .exe
Автор: igor_andreev
Дата сообщения: 11.12.2005 21:57
hacsoft

Цитата:
Странно, иногда бибикает через спикер, иногда через колонку.

Не знаю, сам не пользуюсь, у меня батники тихо, как мыши, работают. Это я привел слегка измененный пример из какого-то древнего досовского FAQ-а. Таких 16-битных полно на любом старом файлоотстойнике, их раньше, судя по всему пачками делали Вот еще один, тоже с файлом scr для debug, 1984 года выпуска _http://www.filegate.net/bfds/beep.zip (1Kb)
Автор: KapralBel
Дата сообщения: 12.12.2005 11:32
morjov
Добавь

Код:
for /L %%b in (1,1,200) Do @Echo %%b >Nul
Автор: seggah
Дата сообщения: 12.12.2005 15:35
Ну чего, в этом batch-языке есть for, if, goto, присваивания. Подключая сторонние программы, можно, так сказать, расширить язык, только зачем всё это нужно?
Автор: EZH
Дата сообщения: 12.12.2005 15:43
seggah

Цитата:
Ну чего, в этом batch-языке есть for, if, goto, присваивания. Подключая сторонние программы, можно, так сказать, расширить язык, только зачем всё это нужно?

Это риторический вопрос что ли? Всё это нужно как программируемое средство администрирования и автоматизации, которое всегда под рукой, когда нет готовых утилит, компиляторов и для тех кому кроме этого и не надо большего. Сейчас на смену BAT уже пришел WSH.
Автор: seggah
Дата сообщения: 12.12.2005 16:10

Цитата:
Сейчас на смену BAT уже пришел WSH.

скорее Perl или Python )
Автор: EZH
Дата сообщения: 12.12.2005 16:29
seggah

Цитата:
скорее Perl или Python )

Ну вот уж нет, мы говорим именно о

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

Мы же не говорим о линухе, где perl и python могу быть в дистрибе, мы говорим о bat, о винде, где есть только то что с ней идет по умолчанию.

А про то где больше возможностей и удобства предлагаю не распространяться, т.к. это будет бессмысленный флуд, при том на уровне религиозной веры.
Автор: seggah
Дата сообщения: 12.12.2005 16:43
Так я тоже о виндах говорю. Тот же перл - если так нужно администрировать, скачал 10 мегов, и наслаждайся. Не в чистом же поле администрируешь. А обычному пользователю и так не сложно. В тех же никсах шел-языки появились только из-за того, что у них ничего кроме коммандной строки не было.
Просто сейчас учиться программировать в BAT'ах - каменный век, мое мнение, конечно.
Автор: KapralBel
Дата сообщения: 12.12.2005 16:44
EZH
Весьма согласен с этим суждением.
Но если смотреть по версиям виндовс - то там нет единого языка...
Ибо возможности command.com Win98 - и cmd.exe WinXP/2003 - весьма различаются, да и возможности wsh - очень различны для верий 98 и ХП (хотя можно обновить 98-й WSH версии 5.1 до версии 5.6).
В крайнем случае можно поставить .net с бесплатным С# от М$
Автор: igor_andreev
Дата сообщения: 12.12.2005 19:38

Цитата:
только зачем всё это нужно?

Позволяет, знаете ли, не забывать, что компьютер изначально задумывался как средство для автоматизации какой-то рутинной работы, а не только в тетрисы-кваки гонять

Цитата:
сейчас учиться программировать в BAT'ах - каменный век

Во флейм с этим будь добр...

Цитата:
возможности command.com Win98 - и cmd.exe WinXP/2003 - весьма различаются

Я кстати тот батник, который определял переменные %DAY% %MONTH% %YEAR% исходя из региональных настроек - добил таки. Работает в NT/2000/XP/2003. Весит за семь килобайт, смотреть страшно. В общем, народ, не парьтесь с вычислениями дня-месяца-года, а делайте приблизительно так:

Код:

@ECHO OFF

:: убираем в переменной %date% точки(если 21.10.2005), слеши(если 21/10/2005)
:: дефисы(2005-10-21) и пробелы(если Fri 21.10.2005)

SET ARCHIVE_SUFFIX=%DATE%

SET ARCHIVE_SUFFIX=%ARCHIVE_SUFFIX:.=%
SET ARCHIVE_SUFFIX=%ARCHIVE_SUFFIX:/=%
SET ARCHIVE_SUFFIX=%ARCHIVE_SUFFIX:-=%
SET ARCHIVE_SUFFIX=%ARCHIVE_SUFFIX: =%

ARJ a MYARC_%ARCHIVE_SUFFIX%.ARJ *.*
ECHO. LA-LA-LA>MYTXT_%ARCHIVE_SUFFIX%.TXT

Автор: hacsoft
Дата сообщения: 12.12.2005 19:54
seggah
bat есть по умолчанию, а Перла может не быть, кто знает, на какой машине придется работать. Но если уж говорить о том, что бы поставить что-то другое, то я бы точно Перл не выбрал, мое ИМХО, но это мертвый тупиковый язык с его нечитабельными конструкциями (просьба с bat не сравнивать, другая история).
Сорри за оффтоп, пора вернуться к теме!
Автор: Death_INN
Дата сообщения: 12.12.2005 22:05
Меня интересует батник, который будет подсчитывать время работы проги с точностью, как минимум, до секунд:
1. Запускаем счётчик
2. Запускаем прогу, например VirtualDubMod /r
3. Выводим время выполнения: часы:минуты:секунды.
Автор: Ternik
Дата сообщения: 13.12.2005 03:57
hacsoft
такая вот задача...
есть папка, в ней тыщща директорий, с разными именами, в каждой по сотне файлов, разных по именам.
задача:
создать строгую нумерическую иерархию папок и файлов. аля:
121321\bbb.txt
buka\ja.bmp
превратить в:
0001\0001.txt
0002\0002.bmp
Автор: hacsoft
Дата сообщения: 13.12.2005 19:47
Ternik

Код: rem (c) HACSoft, 2005.
:: ВНИМАНИЕ: скрипт переименовывает все файлы и папки в текущей папке и во всех ее подпапках!
@echo off
setlocal enabledelayedexpansion
cls
color 0c
echo All files will be renamed
pause
color

exit

:: Переименовываем папки:
set num=0
for /r %%d in (.) do (
    set folder!num!=%%d
    set /a num+=1
)
set /a num-=1
if %num% gtr 9 set prefix1=0
for /l %%i in (%num%,-1,1) do ren "!folder%%i!" %%i 2> nul
:: Переименовываем файлы:
:files
set num=0
for /f "tokens=*" %%f in ('dir /b /s') do (
    if not %%~nf==%~n0 (
        set /a num+=1
        echo %%f
        if not "%%~xf"=="" ren "%%f" !num!%%~xf 2> nul
    )
)
Автор: Ternik
Дата сообщения: 14.12.2005 02:40
hacsoft
Рулишь чувак
спасибо за код, но вот сделай еще поправку на количество цифр в имени файлов плиз... чтобы было не 1,2,3 а 0001, 0002, 0003... 0777 и т.д.
Автор: Death_INN
Дата сообщения: 14.12.2005 07:45
hacsoft

Цитата:
Если в задаче не критично использовать только стандартные средства cmd, то можно написать утилитку, которая будет выдавать время. Т.е. в месте с bat-файлом придется распространять и ее. Это допустимо в данной задаче?

Допустимо. Главное, получить результат любым способом, если винда не позволяет это сделать стандартными средствами. Может через Avisynth-скрипты можно?

Ещё меня интересует задача сохранения из под винды таблицы разделов (MBR), загрузочной записи (BR) и настроек биоса. С первыми двумя задачами может справится debug, а вот чтобы считать данные из микросхемы нужно использовать порты.
Автор: scup
Дата сообщения: 14.12.2005 08:20
Эта тема практически ни чем не отличается от
http://www.forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=4582&start=320#lt
Или там вопрос-ответ, а тут больше теория?
Автор: hacsoft
Дата сообщения: 14.12.2005 10:37
Death_INN
И так, качай утилитку microtime.exe:
http://fsaver.hut1.ru/users/arigato/microtime.rar

Ее кинешь в папку с батником:

Код: @echo off
microtime > $temp$.txt
set /p begin= < $temp$.txt

notepad

microtime > $temp$.txt
set /p end= < $temp$.txt
del $temp$.txt

set /a tm=end-begin
set /a msec=tm%%1000
set /a tm=tm/1000
set /a sec=tm%%60
set /a tm=tm/60
set /a min=tm%%60
set /a tm=tm/60
set /a hour=tm%%60

echo %hour%:%min%:%sec%.%msec%
Автор: Alan Mon
Дата сообщения: 15.12.2005 16:50
Death_INN
hacsoft

Цитата:
Вот только тут одна проблема, команда time /t выдает время с точностью до минут.


Ребята, есть ведь %time%, который выдает время с точностью до миллисекунд.
Автор: hacsoft
Дата сообщения: 15.12.2005 17:51
Alan Mon
Да, действительно так. Что-то не учел, с ним все гораздо проще получится...
Автор: hacsoft
Дата сообщения: 17.12.2005 12:11
Задача на удаление папки
Есть бат-файл (к примеру, uninstall.cmd). Она находится в некоторой папке (к примеру, Folder), кроме этого файла в папке файлов больше нет.
Требуется из данного батника удалить папку вместе с самим батником.
Дополнительное условие: что есть за пределами папки мы не знаем и не имеем права создавать др. файлы за пределами папки (и удалять тоже).
Автор: igor_andreev
Дата сообщения: 17.12.2005 17:12
hacsoft
Ну эт и не задача, в общем то, не сложно...

Код:

@ECHO OFF
CD..
START CMD /C RMDIR /S /Q "%~dp0"

Автор: dmitrob
Дата сообщения: 18.12.2005 02:05
Помогите создать bat файл создающий директорию именем которой будет дата и время ее создания и переписать туда файлы именем которых тоже будет дата ивремя их создания.
Или поскажите в каком направлении искать
Автор: Alan Mon
Дата сообщения: 19.12.2005 09:31
dmitrob
На прошлой неделе в этой ветке тема создания файлов с именем, равным текущим дате-времени разжевана уже до мельчайших деталей. Перечти пару страниц назад и переделай под себя.
Автор: Paul Alekseev
Дата сообщения: 20.12.2005 16:41
Доброго времени суток, господа. Подскажите, пожалуйста, решение (если оно существует, конечно).
Для запуска приложений, защищённых StarForce, я создал .cmd-файлы вида:

Код: start /wait C:\WINDOWS\system32\devcon -disable "@PCI\VEN_10DE&DEV_0053&SUBSYS_50021458&REV_F2\3&2411E6FE&0&30"

start /wait UFO2.exe --options fullscreen=FALSE

start /wait C:\WINDOWS\system32\devcon -enable "@PCI\VEN_10DE&DEV_0053&SUBSYS_50021458&REV_F2\3&2411E6FE&0&30"
Автор: olegupb
Дата сообщения: 20.12.2005 16:45
может кто подскажет , а то не могу нигде найти так щоб работало
Нужно запустить bat файл с параметром. Как сделать так чтоб параметр считывался с другого файла, где кроме нужной строке больше ничего нет. Ось XPProf
Спасибо

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Вернуть библиотеку АТМ (поддержка шрифтов Type 1)


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