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

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

Автор: mugil_cephalus
Дата сообщения: 18.02.2010 20:38
Myster

Цитата:
Но! Если второе поле пустое,

второе поле не пустое
попробуй так
UF|1|123|6|
UF| |456|7|
и сравни результат
при обработке кодом 2-ой строки

Цитата:
UF|1|123|6|
UF||456|7|

"7" - это будет третий token, так как delims=| и код не различает | и ||

и лучше вот такой, модифицированный, код (я так тестировал код)

Код: for /f "tokens=1,3 delims=^|" %%i in (G:\scripts\test\src.txt) do if "_%%i" equ "_UF" echo %%j
pause
Автор: Kirillhome
Дата сообщения: 18.02.2010 21:59
lorents
В шапке Работа с текстом, датой, и файлами » - · Создание листинга директорий на примере создания плейлиста
Автор: lorents
Дата сообщения: 18.02.2010 22:21
Kirillhome
а можно для этого кода в параметре Images\*.png добавить ваш код, чтобы можно было бы найти все файлы *.png которые есть в папке Images и подпапках?

Код: for %1 %%i in (Images\*.png) do (
)
Автор: mugil_cephalus
Дата сообщения: 18.02.2010 22:28
Myster

Цитата:
UF|1|123|6|
UF||456|7|

если из всех токенов только третий имеет длину 3 символа, то можно код "натравить" на эту длину http://forum.ru-board.com/topic.cgi?forum=5&topic=29819&start=380#10

Добавлено:
lorents
если кинуть в папку images батник с кодом:

Код: for /r "%~dp0" %%i in (*.png) do @echo %%i
pause
Автор: Kirillhome
Дата сообщения: 18.02.2010 22:43
lorents
Берём вот это и получаем:

Код:
@echo off
echo Please wait...
mode con codepage select=1251 > nul
if exist c:\all_png.txt del c:\all_png.txt
for /r %%d in (.) do (
cd %%d
for %%f in (*.png) do echo %%f >> c:\all_png.txt
)
mode con codepage select=866 > nul
Автор: mugil_cephalus
Дата сообщения: 18.02.2010 23:12
Ykidia
http://forum.ru-board.com/topic.cgi?forum=5&topic=29240
Автор: lorents
Дата сообщения: 18.02.2010 23:27
Kirillhome
я извиняюсь, я забыл сказать мне бы с путями к этим файлам png, либо полные, либо относительно папки Images

mugil_cephalus
вроде бы то что надо, а как мне прикрутить в мой код
Я просто в этом деле полный ноль
Автор: mugil_cephalus
Дата сообщения: 18.02.2010 23:39
lorents
а что надо? я задачу так и не понял. объясни подронее.
а то здесь -

Цитата:
не подскажите, как можно сделать следующее:
есть некая папка (назовем ее главная папка) и в ней различные папки и файлы, как можно найти все файлы одно разрешения в главной папке?

про подпапки не сказано, а здесь сказанео -
Цитата:
все файлы *.png которые есть в папке Images и подпапках?

что? куда? список файлов в лог? где положить лог? где положить батник? есть ли кириллица в нейминге папок?
Автор: lorents
Дата сообщения: 18.02.2010 23:52
mugil_cephalus
Сейчас постараюсь все объяснить
Есть папка Images, и там много разный файлов и папки
Мне надо получить список png-файлов с путями, как в вашем пример
и вот когда я полу список файлов вставить из в мой код

Код: for %1 %%i in (Images\*.png) do (
)
Автор: mugil_cephalus
Дата сообщения: 19.02.2010 00:09
for /r "%~dp0" %%a in (*.png) do for %1 %%i in (%%~fa) do (
)
pause
Автор: lorents
Дата сообщения: 19.02.2010 00:24
mugil_cephalus
не код а сказка, я очень сильно извиняюсь Вы не мог ли сделать код чтобы поддерживала кириллица, у меня только сейчас повилась в этом потребность
Спасибо Вам большое!
Автор: wolf0425
Дата сообщения: 19.02.2010 06:29
Myster
Цитата:
Есть текстовый файл с разделителями "|". Из строк, где первое поле = "UF", надо извлечь третье поле.
при встречающихся пустых полях for не рулит, так что проще с ним не мучаться
Код: sed.exe -r -n "s/^UF\|[^|]*\|([^|]*).*$/\1/gp" "InFile" >>"OutFile"
Автор: lorents
Дата сообщения: 19.02.2010 07:38
wolf0425

Цитата:
тебе выше Kirillhome писал пример.
Хотя строчка chcp 1251 в начало батника мне кажется симпатичнее чем возня с mode

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

Код: mode con codepage select=1251 > nul
for /r "%~dp0" %%a in (*.png) do for %1 %%i in (%%~fa) do (
)
Автор: wolf0425
Дата сообщения: 19.02.2010 07:57

Цитата:
но у меня не работает
пример неработы где? и чему примерно равен %1?


твое
Цитата:
Я просто в этом деле полный ноль
плохо согласуется с
Цитата:
и вот когда я полу список файлов вставить из в мой код
- опиши лучше задачу целиком, а то код у тебя странный.
Автор: lorents
Дата сообщения: 19.02.2010 08:40
wolf0425

Цитата:
- опиши лучше задачу целиком, а то код у тебя странный.


Код: for %1 %%i in (Images\*.png) do (
    optipng.exe -o7 "%%~i"
    advdef.exe -z4 "%%~i"
    pngout.exe "%%~i"
    deflopt.exe "%%~i"
)
Автор: wolf0425
Дата сообщения: 19.02.2010 09:22
lorents так все же - что делает %1 в твоем for?
и эти утилиты сами по себе понимают имена в кирилице?
Или предлагаешь нам это проверять?
В чем конкретно состоит "не работают", пример имени файла, на котором "не работает" - будет наконец?

мне кажется что тывообще-то хотел вот это:

Код: chcp 1251
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
optipng.exe -o7 "%%~fi"
advdef.exe -z4 "%%~fi"
pngout.exe "%%~fi"
deflopt.exe "%%~fi"
)
Автор: Myster
Дата сообщения: 19.02.2010 09:39
mugil_cephalus

Цитата:
второе поле не пустое
...
"7" - это будет третий token, так как delims=| и код не различает | и ||

Так вопрос из-за того и возник, что поле именно пустое. Ну а раз не различает, тогда действительно только сторонними утилитами...

wolf0425

Цитата:
при встречающихся пустых полях for не рулит, так что проще с ним не мучаться
Код:sed.exe -r -n "s/^UF\|[^|]*\|([^|]*).*$/\1/gp" "InFile" >>"OutFile"
sed - в гугле или в шапке

То, что надо Спасибо!

P.S. "Но осадок остался..." Хочется все же отделаться подручными средствами и видится такой вариант: до парсинга строки делать замену "||", например, на "| |".
Автор: wolf0425
Дата сообщения: 19.02.2010 09:52

Цитата:
Хочется все же отделаться подручными средствами и видится такой вариант: до парсинга строки делать замену "||", например, на "| |".
сразу выплывут ограничения по другим спецсимволам.
с учетом того что мне долго думать лень - то как-то так:
Код: @echo off
for /f "delims=" %%i in ('type "InFile"') do (
    set "string=%%i"
    call :tst
)
exit
    
:tst
set "string=%string:||=| |%"
for /f "tokens=1,3 delims=^|" %%a in ("%string%") do if "UF" == "%%a" 1>>OutFile echo.%%b
Автор: lorents
Дата сообщения: 19.02.2010 11:26
wolf0425

Цитата:
мне кажется что тывообще-то хотел вот это:

Именно это мне и надо было, большое Вам спасибо
Автор: mugil_cephalus
Дата сообщения: 19.02.2010 12:00
кто-нибудь пользуется в батниках командой redir?
а то хелпа нет. особо ковырять не хочется, а любопытно... пока только догадываюсь чем она отличается от кода в батнике forcedos и не догадываюсь - command

Добавлено:
догадался про отличие от command

но, как говор., догадки к делу не пришьешь
Автор: Ykidia
Дата сообщения: 19.02.2010 15:06
mugil_cephalus
Способ с AutoIt я рассмотрю в самую последнюю очередь. Гораздо предпочтительнее, если есть такая возможность, управлять индексированием файловой системы из командной строки. Если вдруг что-нибудь где-нибудь похожее увидите, пожалуйста, дайте мне знать. Спасибо.
Автор: mugil_cephalus
Дата сообщения: 19.02.2010 15:30
Ykidia
что-то не припомню про cli-способ
Уильям Станек - Командная строка Microsoft Windows http://rapidshare.com/files/89629093/Stanek_CLI_MS_Win.rar
там раздел про hdd администрирование (может что-то найдешь)

Добавлено:
Ykidia
есть wsh/vbs (sendKeys) способ (но работает со сбоями) - http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=1491#1

wsh/vbs (sendKeys) - http://forum.ru-board.com/topic.cgi?forum=33&topic=1491&start=1320#3
http://forum.ru-board.com/topic.cgi?forum=33&topic=1491&start=1380#2
Автор: wolf0425
Дата сообщения: 19.02.2010 17:38
Кстати, Станек у кого-нибудь в нормальном формате есть?
нормальный - это любой текстовый (rtf/doc/html/chm) , а не pdf картинками
Автор: Ykidia
Дата сообщения: 19.02.2010 21:05
mugil_cephalus
Сделал так:

Код: wmic volume where indexingenabled='true' set indexingenabled='false'
Автор: Kirillhome
Дата сообщения: 20.02.2010 19:03
diana87
1.[more=Читать дальше..]
Код:
@echo off
echo ====begin==== > renfile.txt
dir /b *.doc >> renfile.txt
dir /b w*.* >> renfile.txt
ren *.doc *.dot
ren w*.* v*.*
echo ====end==== >> renfile.txt
dir /b *.dot >> renfile.txt
dir /b v*.* >> renfile.txt
echo ========= >> renfile.txt
Автор: alin
Дата сообщения: 20.02.2010 19:14
Можно каким либо скриптом скрыть иконки в трее (чтоб не видел boss), а другим скриптом восстановить иконки? Система WinXP SP3.
Автор: mugil_cephalus
Дата сообщения: 20.02.2010 20:40
Ykidia
про wmic я не подумал, а зря - ведь возможностей у нее много, а для интеграции с bat-файлами она хороша (нужно было бы догадаться (дедуктивно) , что на wmic это реализуемо , просто конкретного кода я пока не знаю)
просто, если чего-то нельзя на батниках - сразу редирект на wsh/vbs или, реже, на js, autoit, kixtart
но в последнее время частота имплементации wmic растет, что не может не радовать
wolf0425
пока не встречал. на eBookz нет?


Добавлено:
alin
а чем плохо gui-решение свойства панели задач и меню пуск/скрывать неиспользуемые значки?
Автор: lorents
Дата сообщения: 20.02.2010 22:20
Не подскажите, как в это коде делать поиск двух форматов (png и jpg)

Код: chcp 1251
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
optipng.exe -o7 "%%~fi"
advdef.exe -z4 "%%~fi"
pngout.exe "%%~fi"
deflopt.exe "%%~fi"
)
Автор: Kirillhome
Дата сообщения: 20.02.2010 22:29
lorents
[more=А вот так...]

Код:
chcp 1251
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png Images\*.jpg') do (
optipng.exe -o7 "%%~fi"
advdef.exe -z4 "%%~fi"
pngout.exe "%%~fi"
deflopt.exe "%%~fi"
)
Автор: lorents
Дата сообщения: 20.02.2010 22:47
Kirillhome

Цитата:
А вот так...
Или так...

Спасибо большое

Добавлено:
и еще один вопрос, есть один код

Код: 7z.exe a -r -mm=Deflate -y -tzip -mpass=15 -mfb=258 -mx9 t001.zip ".\ZIP\*"

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

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


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