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

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

Автор: mugil_cephalus
Дата сообщения: 14.07.2010 07:32
BVV63

Цитата:
Все, которые начинаются на cga и ega,

у меня far показывает много cga*.fon и ega*.fon , но как найти terminal.fon ( у него явно другое ntfs-название )

Добавлено:
все равно исходники win открывают ( http://top.rbc.ru/society/07/07/2010/432324.shtml ) может кто подскажет....
Автор: BVV63
Дата сообщения: 14.07.2010 10:14
Поскажите, пожалуйста, как посредством WMIC получить удобоваримый список установленных принтеров для последующей обработки в For? Я пробовал просто "WMIC Printer", "WMIC Printer Get", "WMIC Printer List", но в ответ - совершенное безобразие, кое фиг обработаешь.
P. S. Я знаю, что в 2K3 имеются системные VBS-скрипты для работы с принтерами, но мне их не хочется использовать.

Добавлено:
Всё, вопрос снят. Углубился в WMI (что полезно во всех отношениях) и быстро (основываясь на имеющихся шаблонах) нашёл то, что нужно:
"WMIC Path Win32_Printer Get Name".
Автор: BVV63
Дата сообщения: 14.07.2010 13:04
А вот как удалить принтер, зная его имя, так и не разобрался. Может кто подскажет?
"WMIC Printer Delete /NoInteractive" удаляет все принтеры, что неприемлимо.
Автор: res2001
Дата сообщения: 14.07.2010 14:29
Написал тут батник некий, в начале стоит
setlocal ENABLEDELAYEDEXPANSION
После этого оператора идет присвоение переменной пути к файлу.
Если в пути файла встречается восклицательный знак, то он отбрасывается, естественно это вызывает ошибки в дальнейшей обработке. Как экранировать ! в set?
Пробовал и двойной ввод и ^ и / - не помогает, отказаться от использования ! в путях тоже не вариант - уже много чего прикручено к такой конфигурации.

Добавлено:
пока придумал только такой обходной маневр:

Код: @echo off
set vkl=!
setlocal enabledelayedexpansion
set vv=gg!vkl!gg
echo !vv!
Автор: Maqentaer
Дата сообщения: 14.07.2010 18:32
заключай присвоение в кавычки
set "asd=a!&fds'dasd"
Автор: lorents
Дата сообщения: 14.07.2010 22:25
Добрый вечер!
Как сделаеть, чтобы процесс отображался и в командной строке, и записывался в файл png.log одновременно?

Код: "%~dp0Docs\optipng.exe" -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 %1 > %temp%\png.log
Автор: res2001
Дата сообщения: 15.07.2010 07:36
Maqentaer
кавычки не помогают

Добавлено:
lorents
засунь выполнение команды в for /f "tokens=*" а в теле цикла выводи в лог и на экран.
Автор: lorents
Дата сообщения: 15.07.2010 09:11
res2001
Я не совсем понял как это сделать, можно пример?
Автор: res2001
Дата сообщения: 15.07.2010 09:34
lorents

Код: for /f "tokens=*" %%a in ('"%~dp0Docs\optipng.exe" -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 %1') do %temp%\png.log> echo %%a && echo %%a
Автор: lorents
Дата сообщения: 15.07.2010 09:41
res2001
выдает следующую ошибку

Код: "D:\Прочее\Image" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Не удается найти файл C:\DOCUME~1\Lorents\LOCALS~1\Temp\png.log.
Не удается найти C:\DOCUME~1\Lorents\LOCALS~1\Temp\png.log
Автор: mugil_cephalus
Дата сообщения: 15.07.2010 10:46
lorents

Код: 1>%temp%\png.log 2>&1 "%~dp0Docs\optipng.exe" -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 %1
type %temp%\png.log
Автор: res2001
Дата сообщения: 15.07.2010 10:55
lorents

Цитата:
выдает следующую ошибку


Цитата:
"D:\Прочее\Image" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Этот путь D:\Прочее\Image откуда взялся? из %0 или %1?


Цитата:
а какие именно?

может кавычки или тильду.
хотя у меня такой вариант:

Код: set p=C:\Program Files\WinRAR
for /f "tokens=*" %%a in ('"%p:~,-6%WinRAR\rar.exe" /?') do echo %%a
Автор: lorents
Дата сообщения: 15.07.2010 11:15
mugil_cephalus
Способ хороший, но мне бы отображать процесс в режиме реального времени

res2001

Цитата:
Этот путь D:\Прочее\Image откуда взялся? из %0 или %1?

это путь к картинке, значит это %1
Автор: mugil_cephalus
Дата сообщения: 15.07.2010 11:19
res2001

Цитата:
Написал тут батник некий, в начале стоит
setlocal ENABLEDELAYEDEXPANSION

посм. http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1580#10
Автор: res2001
Дата сообщения: 15.07.2010 11:24
lorents

Цитата:
Способ хороший, но мне бы отображать процесс в режиме реального времени

В случае с фором тоже реального времени не будет - весь вывод будет производится только после того как прога отработает. Такой уж он не многозадачный, наш cmd.exe.
Так что воспользуйся советом mugil_cephalus, он адназначна лучше моего варианта.
Автор: mugil_cephalus
Дата сообщения: 15.07.2010 11:27
lorents

Код: for /f "tokens=*" %%a in ('""%~dp0Docs\optipng.exe" -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 %1"') do (
1>>%temp%\png.log 2>&1 (echo.%%~a)
2>&1 (echo.%%~a)
)
pause
Автор: res2001
Дата сообщения: 15.07.2010 11:31
mugil_cephalus
собственно, я сам пришел к такому же варианту с переменной.
С cmd у меня не прокатит, поскольку надо не только вывести сообщение.


Добавлено:
mugil_cephalus
с чего ты взял что в форе будет онлайн?
Запусти в форе какую-нибудь команду, которая долго отрабатывает и при этом сыпет сообщения на экран. Например ping -n 20 127.0.0.1 и все сам увидишь.
Автор: mugil_cephalus
Дата сообщения: 15.07.2010 11:39
res2001
да, я видел...
просто, ощущение, что там 1 Гб лога...
зачем то просит... cmd сейчас такая быстрая , что разницы от кодов не заметишь...

Добавлено:

Цитата:
с чего ты взял что в форе будет онлайн?

думал прога выдает несколько var %%a
Автор: lorents
Дата сообщения: 15.07.2010 11:48
mugil_cephalus
А в чем разница между двумя выше представленными кодами?
Я разницы не увидел, оба кода показывают в командной строке после того как optipng заканчивает работать

Чуть не забыл, спасибо
Автор: BVV63
Дата сообщения: 15.07.2010 13:31
Что-то столкнулся с очень странным выводом при использовании

Код: For /F "Delims== Skip=2 Tokens=2 UseBackQ" %%A In (`WMIC NTEventLog Get Name /Value`) Do (
Echo %%A
Copy %%A /Y <Destination>)
Автор: lorents
Дата сообщения: 15.07.2010 16:06
Помогите решить одно задачу, это связано с ImageMagick

Код: "%~dp0Docs\convert.exe" \image\1.png -background Black -alpha Background \image\2.png
Автор: wolf0425
Дата сообщения: 15.07.2010 16:15

Цитата:
Такое впечатление, что символы перевода строки и возврата каретки откуда-то берутся.
их маленькие зеленые человечки присылают. в смысле - лишние символы 0x0D в конец строки, при разделении строк 0D0A
МЗЧ работают в МС и написали WMIC

ну, если взять на веру что расширение будет Evt - то тут то можно поменять %%А на %%~dpnA.evt
а универсальное решение без внешних утилит - самому интересно.
Автор: res2001
Дата сообщения: 15.07.2010 16:50
lorents
может я чего то недопонял, но по моему так:

Код: for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
echo Images\%%i
)
Автор: lorents
Дата сообщения: 15.07.2010 17:16
res2001

Цитата:
может я чего то недопонял, но по моему так:

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


Добавлено:
и еще где можно прочитать про параметр copy /#?
Автор: wolf0425
Дата сообщения: 15.07.2010 20:00

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


Добавлено:
res2001
Цитата:
У тебя софтина отказывается работать, если в полном пути есть русские имена?
А русские имена файлов она тоже не понимает? Как с  этим будешь бороться?
ага, обсуждали же уже эту кривую софтину и что б такое с ней сделать.
Вариант добиться от автора устранения глюков обработки неамериканской кодировки имен - почему-то не прошел, наверно автору оптимизировать картинки на дополнительные 0.0001% - важнее чем вообще разбираться с тем, как в виндах положено открывать файлы
Автор: VitProff
Дата сообщения: 15.07.2010 20:45
Нужно написать CMD который будет искать и архивировать файлы в папке. Список файлов для архивирования будет часто меняться, причем очень сильно. Было бы хорошо если б список файлов для архивирования был в отдельном файле а не в самом скрипте.
Помогите написать такой скрипт который бы делал то что написамо выше.
СПАСИБО!
Автор: yurkesha
Дата сообщения: 15.07.2010 22:38
VitProff
Ты бы хотя бы предварительно ознакомился с возможностями консольных архиваторв что ли...
Вот например что пишет консольный 7z при запуске без параметров:
Код: [no]7-Zip [64] 4.65 Copyright (c) 1999-2009 Igor Pavlov 2009-02-03

Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...] [<@listfiles...>][/no]
Автор: BVV63
Дата сообщения: 16.07.2010 06:27
Насчёт вчерашнего вопроса. Во-первых, в-попыхах (спешил домой) был неточен, забыл кавычки:

Код: For /F "Delims== Skip=2 Tokens=2 UseBackQ" %%A In (`WMIC NTEventLog Get Name /Value`) Do Echo "%%A">файл
Автор: mugil_cephalus
Дата сообщения: 16.07.2010 09:03
wolf0425

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

1. а если софтине скормить кракозябры , то есть 866/1251-имя в 1252-кодировке cmd ?
2. http://forum.ru-board.com/topic.cgi?forum=62&topic=9040&start=733&limit=1
Автор: wolf0425
Дата сообщения: 16.07.2010 10:41

Цитата:
1. а если софтине скормить кракозябры
а это как? можно пример на тему такого кормления?
например для файла кирилица.png

BVV63
Цитата:
Во-вторых, забыл указать операционку: 2K3 (под XP вроде бы подобного безобразия не наблюдается).
у меня на XP pro eng sp3 - аналогичное безобразие.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

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


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