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

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

Автор: sergij
Дата сообщения: 08.03.2010 21:51
1
Автор: wolf0425
Дата сообщения: 09.03.2010 02:26

Цитата:
да, это не атрибуты, но в Свойствах так отображается! то есть по разному в висте и хр
это различия в настройках системы, влияют только на показ этого сообщения. на работу батников - не влияют.

А не работает он у тебя по всем признакам от того, что не может найти какую-то прописанную в нем программу - т.е. смотреть надо на содержимое.
Автор: IndianaJonESS
Дата сообщения: 09.03.2010 09:59
wolf0425
См. ПМ
Автор: Dimau1981
Дата сообщения: 09.03.2010 14:36
Доброго времени суток.
Имеется программа, fi_c44.exe. Нужен батник, который при запуске просил бы указать папку, из которой бы батник брал все имена *.jpg, и потом запускал бы программу fi_c44.exe с параметром в виде имени (например, "fi_c44.exe 1.jpg") и так последовательно для всех файлов картинок в указанной папке.
Это прога для конвертации jpg в djvu.
Помогите плиз, самому не одолеть...
Автор: 01MDM
Дата сообщения: 09.03.2010 20:15
Dimau1981

Код:
@echo off
for %%i in (*.jpg) do fi_c44.exe "%%i"
Автор: Dimau1981
Дата сообщения: 09.03.2010 20:46
Ага, спасибо. Работает, но после обработки всех файлов уходит в цикл, и начинает по новой..
Автор: wolf0425
Дата сообщения: 09.03.2010 20:54

Цитата:
после обработки всех файлов уходит в цикл, и начинает по новой..
значит так:

Код: @echo off
for /f "delims=" %%i in ('dir /b /a-d *.jpg') do fi_c44.exe "%%i"
Автор: Dimau1981
Дата сообщения: 09.03.2010 21:16
Вот спасибо, так нормально!

Добавлено:
В чем может быть проблема:
Написал первый батник, в котором:

@echo off
setlocal ENABLEDELAYEDEXPANSION
set str="local.txt"
set /p str=name file:
echo %str%
copy 1.bat %str%
copy freeimage.dll %str%
copy fi_c44.exe %str%
cd %str%
call 1.bat

И второй, в котором собственно
@echo off
for /f "delims=" %%i in ('dir /b /a-d *.jpg') do fi_c44.exe "%%i"

Так при запуске все куда надо копируется, но при call 1.bat говорит, что файл не найден? Если запустить 1.bat из %str%, то отрабатывает нормально...
Автор: wolf0425
Дата сообщения: 09.03.2010 22:28
а зачем тебе два батника то? так не работает?

Код: @echo off
set str="local.txt"
set /p str=name file:
echo %str%
cd %str%
for /f "delims=" %%i in ('dir /b /a-d *.jpg') do "%~dp0\fi_c44.exe" "%%i"
Автор: Dimau1981
Дата сообщения: 09.03.2010 23:07
Да, так говорит - файл не найден...
А если указать путь с именем файла - работает, но говорит что неверное имя папки, а хочется, чтобы по указанному пути все jpg подхватывало.
Автор: sergij
Дата сообщения: 10.03.2010 01:17
Ув. Гуру - надо вывести в файл по колонкам содержимое из логов 001.log-003.log в 001.log содержит имена компов : 002- мак -адреса : 003-имя пользователя

Надо Вывести так :

Имя копа МАК-адрес Имя пользователя
WS 01 00-13-20-22-9B-45 vasya
WS 02 00-22-55-ff- 12-7B chapaev
WS 03 00-13-20-22-9B-48 petya

Код:
del /q out.txt
chcp 1251
setlocal enabledelayedexpansion

echo Имя комьютера     MAC-адрес    Пользователь >>out.txt


for /f "tokens=*" %%i in (001.log) do set pc="%%i"

for /f "tokens=*" %%i in (002.log) do set mac="%%i"

for /f "tokens=*" %%i in (003.log) do set gen="%%i"

echo %pc%    %mac%        %gen% >> out.txt
Автор: Dimau1981
Дата сообщения: 10.03.2010 01:23
Помогите кто-нибудь, плиииз...
Автор: king_stiven
Дата сообщения: 10.03.2010 08:07
sergij
Проще через утилиту сделать
sed -n "5p" 1.log
выведет 5 строку 1.log

Добавлено:
Dimau1981
выложи лог, то есть запускаешь батник и копируешь из чёрного окошечка,
может вот здесь:
Цитата:
%~dp0\fi_c44.exe

надо
%~dp0fi_c44.exe
Автор: mugil_cephalus
Дата сообщения: 10.03.2010 09:06
sergij

Код: setlocal enabledelayedexpansion
:loop
for /f "tokens=* %skp%" %%i in (001.log) do (
0>nul 1>>out.txt 2>&1 set /p="pc=%%i "
for /f "tokens=* %skp%" %%i in (002.log) do (
0>nul 1>>out.txt 2>&1 set /p="mac=%%i "
for /f "tokens=* %skp%" %%i in (003.log) do (
0>nul 1>>out.txt 2>&1 set /p="gen=%%i "
if /i "_%skp%" equ "_" set "skp=0"
set /a skp=!skp!+1
set "skp=skip=!skp!"
1>>out.txt 2>&1 echo.
goto:loop
)))
pause
Автор: wolf0425
Дата сообщения: 10.03.2010 10:49

Цитата:
if /i "_%skp%" equ "_" set "skp=0"
set /a skp=!skp!+1
set "skp=skip=!skp!"
goto:loop
ппц мне мозги этот финт переклинил.
Сам придумал?
Автор: mugil_cephalus
Дата сообщения: 10.03.2010 11:03
wolf0425
да вроде не мудрено...

Добавлено:
sergij

Код: chcp 1251
setlocal enabledelayedexpansion

echo Имя комьютера MAC-адрес Пользователь >>out.txt

:loop
for /f "tokens=* %skp%" %%i in (001.log) do (
0>nul 1>>out.txt 2>&1 set /p="%%i "
for /f "tokens=* %skp%" %%i in (002.log) do (
0>nul 1>>out.txt 2>&1 set /p="%%i "
for /f "tokens=* %skp%" %%i in (003.log) do (
0>nul 1>>out.txt 2>&1 set /p="%%i"
if /i "_%skp%" equ "_" set "skp=0"
set /a skp=!skp!+1
set "skp=skip=!skp!"
1>>out.txt 2>&1 echo.
goto:loop
)))
pause
Автор: Dimau1981
Дата сообщения: 10.03.2010 13:32
Говорит - "Файл не найден"
Автор: kermit
Дата сообщения: 10.03.2010 13:38
подскажите как в цикл типа:

:beep
beep.com
timeout 1
goto :beep

вставить анализ нажатия клавиши, чтобы после нажатия любой клавиши, происходил переход на другую метку?


Добавлено:
вобщем задача привлечь внимание писком, вставить другой диск и продолжить копирование
если это можно покрасивше написать, подскажите!
Автор: mugil_cephalus
Дата сообщения: 10.03.2010 13:43
kermit
http://forum.ru-board.com/topic.cgi?forum=5&topic=25393&start=500#9
Автор: Dimau1981
Дата сообщения: 10.03.2010 14:04
Не, не работает. Гуру, помогите плиз...
Ситуация такая - на G:\Soft\pic2djvu лежит прога.
Нужно, чтобы при запуске она спрашивала путь, и по нему конвертировала все лежащие там jpg в djvu. Параметр запуска отсутствет
(просто "fi_c44.exe 1.jpg"). Пока получилось

@echo off
set str="local.txt"
set /p str=name file:
echo %str%
cd %str%
for /f "delims=" %%i in ('dir /b /a-d *.jpg') do "%~dp0fi_c44.exe" "%%i"

но это работает, только если прога лежит в, к примеру, b:\, а картинки - b:\1
Автор: kermit
Дата сообщения: 10.03.2010 14:04
mugil_cephalus

не совсем то
скрипт остановится на строке
set /p tsk="Choose a task by number: "

и не будет пищать
Автор: mugil_cephalus
Дата сообщения: 10.03.2010 14:20
kermit
можно поставить счетчик на, например, 10 beep'ov, но число этих бипов должно быть детерминированым, а не стохастическим (хотя можно и random)
вообще опиши подробнее задачу
Цитата:
вобщем задача привлечь внимание писком, вставить другой диск и продолжить копирование

то есть должно 1 раз пискнуть, потом Press any key to continue... , потом нажимаем любую клавишу и далее... ??
или должен пищать, пока не нажмешь клавишу?
Автор: king_stiven
Дата сообщения: 10.03.2010 14:45
Dimau1981


cd /d %str%
for /f "delims=" %%i in ('dir /b /a-d *.jpg') do "G:\Soft\pic2djvu\прога.exe" "%%i"

kermit
Сторонние утилиты можно?
Автор: Dimau1981
Дата сообщения: 10.03.2010 15:11
king_stiven, спасибо огромное, все работает!
Автор: kermit
Дата сообщения: 10.03.2010 15:15
king_stiven

Цитата:
Сторонние утилиты можно?


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

Пакет утилит для организации интерфейса в bat-файлах, Kix, или чегонить из ресурскитов?

Автор: mugil_cephalus
Дата сообщения: 10.03.2010 15:26
kermit

Код: call:_1

:loop
if exist "%~dpn02.bat" (echo hi) else goto:exit
goto:loop

:_1
(echo pause
echo del /q "%~dpn02.bat")>"%~dpn02.bat"
start "" "%~dpn02.bat"
goto:eof

:exit
pause
Автор: king_stiven
Дата сообщения: 10.03.2010 16:21
kermit
Ну не знаю, как насчёт красоты, можно так:

Код: start "" /MIN 1.bat
echo нажимайте любую клавишу и противный звук перестанет давить на ваш моск!
pause> nul
taskkill /F /FI "WINDOWTITLE eq dfgh" /im cmd.exe /T
Автор: kermit
Дата сообщения: 10.03.2010 18:20

как отформатить переносной винт в NTFS с подавлением всех вопросов?

Пишу в скрипте:

Код:
format E: /V:TEST /FS:NTFS /Q
Автор: sergij
Дата сообщения: 10.03.2010 19:51
Ув. mugil_cephalus
Большое спасибо за ваше внимание за ваше интересное решение такой проблемы
да всё получается как надо - если в логах выстроенно строчка за строчкой
но у меня логи идут через строчку ( просто это один из многих этапов обработки текста и вывод в логи получается через строчку) и вот после их обработки получается удвоение каждого компа мака и юзера т.е .

WS 01 0001445566 vasya
WS 01 0001445566 vasya
WS 02 0011223344 petya
WS 02 0011223344 petya итд

Я конечно итак Вам безмерно благодарен - буду и сам разбираться но если Вас не затруднит .....

king_stiven Вам тоже спасибо - просто хотелось бы без sed
Автор: king_stiven
Дата сообщения: 10.03.2010 20:08
sergij
замени
set /a skp=!skp!+1 на
set /a skp=!skp!+2

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

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


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