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

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

Автор: 01MDM
Дата сообщения: 23.09.2009 15:52
anachrom

Код:
@echo off
setlocal

set "cnt=0"
for /f %%i in ('tasklist ^| findstr process.exe') do set /a cnt+=1
if not %cnt% equ 0 (
if not %cnt% gtr 1 (
echo Only one copy of the program
) else (
echo Some copies of the program
)
) else (
echo Process not found
)
Автор: Shadow4
Дата сообщения: 24.09.2009 09:26
ShriEkeR
спс!
Автор: dragon83
Дата сообщения: 24.09.2009 16:01
Подскажите, как решить задачу? Нужно проверить дату файла 1 в каталоге A, сравнить с датой файла 2 в каталоге B и если она раньше то выполнить определенное действие, в частности скопировать файл 1 в каталог B.
Автор: tigr72
Дата сообщения: 24.09.2009 20:58
Доброго времяни суток всем.
При написаний очередной "кухни" под прошивку зверька. Сталкнулся с двумя проблемами. Одну из них очень очень довно (еще во времена MS-DOS 3.3) я решал, но просто за бытностью времен (да и системы круто изменились) все позабыл окончательно...
Проблема номер один.
Мне нужно поменять внутри файла с данными (не тхт) 3 байтика где эти байтики находятся я знаю (не в начале и не в конце). Как их можно поменять только средствами BAT файла??? Или стороней консольной программы, только что бы она это делала автоматически без лишних остановок и запросов...

Проблема номер два.
Как мне проверить размер файла? Т.е. мне в батнике нужно проверить получившийся файл и если он меньше или равнятся определенному размеру то продолжаем, если больше то "материмся" и выходим...

зы Заранее благодарен за помощь!
Автор: wolf0425
Дата сообщения: 24.09.2009 21:33

Цитата:
Проблема номер один.
Мне нужно поменять внутри файла с данными (не тхт) 3 байтика
если файлик не очень велик - можно поизвращаться с debug.exe и перенаправлением ввода. Поищи примеры, что-ли...


Цитата:
Проблема номер два.
Как мне проверить размер файла? Т.е. мне в батнике нужно проверить получившийся файл и если он меньше или равнятся определенному размеру то продолжаем, если больше то "материмся" и выходим...

for %%a in (file.ext) do if %%~za gtr 12345 echo великоват && goto :eof


Автор: tigr72
Дата сообщения: 24.09.2009 21:55
В том то и дело что файл почти 53 метра, а эти три байта нужно менять примерно в середине...
Автор: tigr72
Дата сообщения: 25.09.2009 10:44
Сам отвечу на свой вопрос... Нашел малюсинькую программку для пойска и замены байт в любом файле... Т.ч. пока пользую ее...
http://ivr.webzone.ru/articles/mreplace/index.htm
Автор: Aeismann
Дата сообщения: 25.09.2009 10:44
Набрёл на хорошую статью по получению даты в батче. Решение через реестр, наиболее универсальное из всех имеющихся, на основе только встроенных средств и reg.exe

http://www.robvanderwoude.com/datetimentparse.php
Автор: RRRRR
Дата сообщения: 25.09.2009 22:00
Народ нужен батник с командой, которая выполняет поиск по всем дискам нужного файла и копирует его на другой диск
Автор: 01MDM
Дата сообщения: 26.09.2009 09:22
RRRRR
А если будут несколько файлов с одним названием? Найти можно так:

Код:
@echo off
setlocal

set "exec=wmic volume where drivetype^="3" get driveletter /value"

for /f "tokens=2 delims==" %%i in ('%exec%') do (
    for /f "tokens=*" %%i in ('2^>nul dir /b /s /a %%i\1.txt') do echo %%i
)
Автор: Shylock
Дата сообщения: 27.09.2009 09:57
Нужен алгоритм разбиения текста на слова, ну или выделения слов из текста

Допустим есть файл вида:
Код: This is the source code for Advanced JavaServer Pages, published
by Prentice-Hall and Sun Microsystems Press. All of this code
was tested with Tomcat 3.2.1 and Resin 1.2.
Автор: 01MDM
Дата сообщения: 27.09.2009 11:09
Shylock

Код:
@echo off
for /f "tokens=*" %%i in (1.txt) do (
    for %%i in (%%i) do echo %%i
)
Автор: wolf0425
Дата сообщения: 27.09.2009 11:11
Shylock
Цитата:
Но как считывать разделенные блоки %%# , когда кол-во слов не известно и в одной строке их может быть сколь угодно?

так подойдет?

Код: for /f "delims=" %%j in (myfile.txt) do call :_select %%j
goto :eof

:_select
if '%1'=='' goto :eof
(echo %1)>>myfile2.txt
shift
goto :_select
Автор: Shylock
Дата сообщения: 27.09.2009 11:24
01MDM
wolf0425
Все работает, большое вам спасибо!
Автор: mfd2hd
Дата сообщения: 28.09.2009 14:30
Подскажите, пажалосто, в чем м\б ошибка? Задача такая: скачать все картинки от имг-0001 до имг-9999. Делаю так:

Код: for %n in (seq -w 4 99); do wget http://test.ru/img-%n.jpg; done
Автор: korosya
Дата сообщения: 29.09.2009 12:59
Есть текстовый файл akelpad.txt - HTML-код страницы http://akelpad.sourceforge.net/ru/download.php .
Пример - под #


Надо выцепить из этого файла ссылку на скачку архива (русская версия). В приведенном примере это http://prdownloads.sourceforge.net/akelpad/AkelPad-4.3.2-bin-rus.zip?download. Цифры 4.3.2 - меняются.
Заранее спасибо.
Автор: wolf0425
Дата сообщения: 29.09.2009 13:13

Цитата:
Надо выцепить из этого файла ссылку на скачку архива (русская версия).

Цитата:
Цифры 4.3.2 - меняются.
там одновременно ссылки на 4.* и 3.* версии.
Ести тебе надо не 4.* - формализуй как-то еще, можно "первую" или "обе"

Код: wget http://akelpad.sourceforge.net/ru/download.php
for /f "tokens=2 delims=>=" %%a in (' find "http://prdownloads.sourceforge.net/akelpad/AkelPad-4" download.php ^| find "bin-rus.zip?download"') do wget %%a
Автор: 01MDM
Дата сообщения: 29.09.2009 13:29
korosya

Код:
@echo off
setlocal

set "url=http://prdownloads.sourceforge.net/akelpad/AkelPad-.*-bin-rus.zip\?download"

cmd /c wget http://akelpad.sourceforge.net/ru/download.php

for /f "tokens=2 delims==?" %%i in ('findstr "%url%" download.php') do (
    set "download=%%~i?download"
    goto:download
)

:download
del download.php
cmd /c wget %download%
Автор: mugil_cephalus
Дата сообщения: 29.09.2009 16:24
А можно как то коммандной строкой вызвать для просмотра коды из *.DLL-ов ?
А то у меня получается только для printui.dll:

C:\>rundll32 printui.dll,PrintUIEntry /?

вот вывод:
Использование: rundll32 printui.dll,PrintUIEntry [параметры] [@командный файл]
/a[имя_файл] имя двоичного файла
/b[имя] основное имя принтера
/c [имя] UNC-имя компьютера, где выполняется команда
/dl удаление локального принтера
/dn удаление подключения к сетевому принтеру
/dd удаление драйвера принтера
/e вывод параметров настройки печати
/f[file] или информационный файл, или выходной файл
/ga добавление подключений компьютеров к принтеру
/ge перечисление подключений компьютеров к принтеру
/gd удаление подключений компьютеров к принтеру
/h[arch] Архитектура драйвера для: Alpha | Intel | IA64 | х64
/ia установка драйвера принтера с помощью информационного файла
/id установка драйвера принтера с помощью мастера установки драйверов принтеров
/if установка принтера с помощью информационного файла
/ii установка принтера с помощью мастера установки принтеров и информационного файла
/il установка принтера с помощью мастера установки принтеров
/in добавление подключения к принтеру
/j[provider] имя системы печати
/k печать пробной страницы на выбранном принтере, не может использоваться с другими командами установки принтера
/l[path] путь к исходному размещению драйвера принтера
/m[model] имя модели драйвера принтера
/n[name] имя принтера
/o показать очередь заданий на печать
/p отображение свойств принтера
/q скрытый режим без вывода сообщений об ошибках
/r[port] имя порта
.........................

и т.д.
Автор: korosya
Дата сообщения: 29.09.2009 21:22
01MDM
Спасибо - всё заработало.
А на вопрос, который я задавал ранее:

Цитата:
Подскажите, возможно ли из командной строки изменить версию файла?

нет ответа?
Автор: Alexeyfan
Дата сообщения: 30.09.2009 05:46
Такая задача - батник запускается с параметрами через пробел, количество параметров величина переменная, как написать, чтобы определённая программа обрабатывала все отданнные банику данные. Допустим в виде данных идут имена файлов, а запускаемая в батнике программа 7z. Не писать же по очереди что-то типа: 7z -y %1, потом 7z -y %2 и т.д.
Автор: 01MDM
Дата сообщения: 30.09.2009 09:19
Alexeyfan

Цитата:
Не писать же по очереди что-то типа: 7z -y %1, потом 7z -y %2 и т.д.


Код:
@echo off
for %%i in (%*) do 7z -y %%i
Автор: NIKZZZZ
Дата сообщения: 30.09.2009 09:27
Alexeyfan

Цитата:
Не писать же по очереди что-то типа: 7z -y %1, потом 7z -y %2 и т.д.



Код: :_1
if "%1"=="" goto :eof
7z -y %1
Shift
goto _1
Автор: zett
Дата сообщения: 30.09.2009 09:49
Коллеги, подскажите плз, как проверить на пинг комп, если он есть то подключить сетевой диск.
Вот тут был пример http://forum.ru-board.com/topic.cgi?forum=62&topic=6156&start=220#18 но не совсем что нада

Придумал вот такой вариант
ping srv1 > nul && подключаем диск || говарим, вставьте кабель

Кто знает вариант получше? Желательно с циклом, чтобы проверка продолжалась дальше, если кабель не воткнут.
Автор: 01MDM
Дата сообщения: 30.09.2009 09:57
zett

Код:
@echo off
1>nul ping -n 1 \\Comp && net use z: \\Comp\Resource || echo \\Comp not available at time
Автор: zett
Дата сообщения: 30.09.2009 10:02
01MDM
Нифига ты меня на пол секунды опередил)
А с цыклом знаешь как лучше?
Автор: 01MDM
Дата сообщения: 30.09.2009 10:11
zett

Цитата:
А с цыклом знаешь как лучше?

Не понял на счет цикла. Нужно несколько сетевых дисков?

Автор: zett
Дата сообщения: 30.09.2009 10:17
01MDM

Цитата:
Не понял на счет цикла. Нужно несколько сетевых дисков?


Да не! Просто на ноуте может быть кабель сетевой не подключен, надо чтоб в этом случае пинг зацикливался, и писал подключите кабель. Кабель подключает и пошло поехало )
Автор: 01MDM
Дата сообщения: 30.09.2009 10:20
zett
Я просто не прочитал твое исправление. Попробуй так:

Код:
@echo off
:check
1>nul ping -n 2 \\Comp && net use z: \\Comp\Resource || echo bla-bla-bla && goto:check
Автор: zett
Дата сообщения: 30.09.2009 10:25
01MDM

Цитата:
Я просто не прочитал твое исправление.

Так уже похоже на правду, но он заклевает блаблабла, а когда кабель втыкаешь просто останавливается.

Не, гоню, все норм!))
А можно както сделать чтобы блаблабла не зацикливалось, а просто один раз напилало и все?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


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