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

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

Автор: us0r
Дата сообщения: 17.08.2010 16:38
Rush
Ну если не одно, так другое...
Автор: wolf0425
Дата сообщения: 17.08.2010 17:56
bomzzz
Цитата:
Типа такого наверно
так есть экзешник, которыё печатает длинное имя пути в stdout?
ссылочку повтори....
Автор: bomzzz
Дата сообщения: 18.08.2010 00:40
wolf0425
http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=3360#4
есть но он только печатает, а ничего с этой печатью сделать нельзя.

Добавлено:
может я конечно неправильно сделал, по справочники апи функций прошелся все что было перепробовал. в конце каждой статьи список см также. вот я по этому списку прошелся
Автор: wolf0425
Дата сообщения: 18.08.2010 00:52

Цитата:
есть но он только печатает, а ничего с этой печатью сделать нельзя.
значит он куда-то не туда печатает, если его вывод перенаправлениям не поддается.
Печатать надо в stdout а не в консоль.
исходники то есть?
Автор: bomzzz
Дата сообщения: 18.08.2010 00:58
сяс попробуим
invoke StdOut,ADDR buffer
нету у меня такого в справочнике случайно нагуглил

cFOLDER.EXE 2,00 КБ (2 048 байт)
возвращает длинный путь в 866 кодировке и код возврата тоже

CFOLDER.EXE 2,00 КБ (2 048 байт)
вот ета короткий путь возвращает и код возврата тоже

проверяй

Цитата:

ECHO OFF
COLOR 9F
CLS
CFOLDER.EXE /11111111111111111111/222222222222222222222222
ECHO.
ECHO %ERRORLEVEL%
FOR /f "delims=*" %%I IN ( 'cFOLDER.EXE' ) DO SET G=%%I
ECHO.
ECHO %G%
ECHO %G%>MMM.TXT
TYPE MMM.txt
ECHO OFF>"%G%\MY.TXT"
PAUSE


Добавлено:
http://narod.ru/disk/23438457000/WIN32.zip.html спарвочник нормальный у мине а вот такого нету тута
http://films-onep.ifolder.ru/18930165

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

Добавлено:
кстати в этом случае ее можно не компилировать как консольную

Добавлено:
C-FOLDER.EXE 2,00 КБ (2 048 байт)
не консольная - значение только из потока можно получить
Автор: BVV63
Дата сообщения: 18.08.2010 04:44
01MDM

В ответе godzila46 Вы отпостили:

Код: ...
2>nul pushd "%%i\Local Settings\Temporary Internet Files" && 2>nul rd /s /q "."
...
Автор: bomzzz
Дата сообщения: 18.08.2010 07:44
причем я до сих пор не понил как сей шедевр работает
2>nul
но к списаку жемчужин от 01MDM сразу добавил
Автор: kurbat
Дата сообщения: 18.08.2010 08:05
us0r
ничего не жму по завершении скачавания само зываершает работу
Автор: bomzzz
Дата сообщения: 18.08.2010 08:06
FILE.EXE 2,50 КБ (2 560 байт)

Цитата:

ECHO OFF
COLOR 9F
CLS
FOR /f "delims=*" %%I IN ( 'NONAME.EXE /C:\Temp' ) DO SET G=%%I
ECHO.
ECHO %G%
pause

параметр пока один - папка по умолчанию, если опустить открывается на рабочем столе или последнее открытое окно в этом типе окна - если не очисщены записи в системе:

как передать вот это строкой мыслей нету:

Цитата:

.data
FileFilter        db "All Files",0,"*.*",0
db "Text Files",0,"*.txt",0
db "Video Files",0,"*.avi;*.wmv;*.mkv;*.mpg;*.mpeg;*.mp4",0
db "Audio Files",0,"*.wav;*.mp3;*.flac;*.wma;*.ac3;*.ram;*.rm",0
db "Image Files",0,"*.iso;*.ima;*.img;*.imz;*.vdf;*.isz;*.bin;*.cue;*.nrg;*.mdf;*.mds;*.uif",0
db "Bitmap Files",0,"*.bmp;*.jpg;*.jpeg;*.png;*.gif;*.pcx;*.iff;*.psd;*.ras;*.rsb;*.sgi;*.tga;*.tiff",0
db "Archive Files",0,"*.zip;*.rar;*.gz;*.gzip;*.7z;*.cab;*.arj;*.jar",0
db 0


похоже удобнее уже не сделать. разве сделать еще одну позволяющую выбирать несколько файлов выделением. но там выдается в другой форме
Автор: Rush
Дата сообщения: 18.08.2010 09:30
bomzzz

Цитата:
причем я до сих пор не понил как сей шедевр работает
2>nul

Работает просто и изящно.

for /d %%i in ("C:\Documents and Settings\*") - перебирает вложенные в "C:\Documents and Settings\" каталоги.

2>nul pushd "%%i\Local Settings\Temporary Internet Files" - выполняет переход в каталог "C:\Documents and Settings\какой-то пользователь\ Local Settings\Temporary Internet Files". Если такого каталога нет, сообщение об ошибке (2>nul) перенаправляется в nul (не выдается). И обрабатывается уже следующий каталог.

&& 2>nul rd /s /q "." - если же такой каталог есть (&&), то в нем удаляются все каталоги (".") включая подкаталоги вместе с файлами (/s). Вывод ошибок опять игнорируется.
Автор: bomzzz
Дата сообщения: 18.08.2010 10:30
INPUTBOX.EXE 3,00 КБ (3 072 байт)

переделал в свете последний нововведений

Цитата:

ECHO OFF
COLOR 9F
CLS
FOR /f "delims=*" %%I IN ( 'INPUTBOX.EXE /TITLE/SUBTITLE/300/250' ) DO SET G=%%I
ECHO %G%
pause

параметры командной строки
INPUTBOX /заголовок/иформационная строка/положение окна по Y/положение окна по X
кодировка вывода 866, если опустить два последних параметра окно появится в верхнем левом углу экрана - 0 0. буфер под строку 64 кб, сколько длина строки в батнике даже не скажу с ходу наверно 1 кб

спс wolf0425 за идею. окно не маё я его в инете где то надыбал давно. подправил маненько

старые поделки
http://forum.ru-board.com/topic.cgi?forum=5&topic=29819&start=1040#12
http://forum.ru-board.com/topic.cgi?forum=5&topic=29819&start=1060#12
http://forum.ru-board.com/topic.cgi?forum=5&topic=29819&start=1200#4

REBOOT.EXE 1,50 КБ (1 536 байт)
Автор: Rush
Дата сообщения: 18.08.2010 10:46
bomzzz
Ты бы создал отдельный топик по своим утилиткам. В шапке, если желаешь, можно ссылу на него дать.
А здесь они у тебя разбросаны где попало по топику.
Автор: bomzzz
Дата сообщения: 18.08.2010 10:48
ну как нить сделаю - они побочный продукт разбора апи функций

Добавлено:
с этими четтырьмя окнами: диалоговые, выбор папки, выбор файла, ввыод строки + WMI уже сильнее вбс скриптов батнички
Автор: wolf0425
Дата сообщения: 18.08.2010 11:43

Цитата:
Добавлено:
C-FOLDER.EXE 2,00 КБ (2 048 байт)
не консольная - значение только из потока можно получить
чего-то не пойму как от неё хоть что-то получить.

а cFOLDER.exe реально переделать чтоб вывод был в текущей установленной кодировке консоли, а не в ОЕМ?
просто ОЕМ мне малополезен, у меня обычно кодировка 1251...
Автор: bomzzz
Дата сообщения: 18.08.2010 11:47
в принципе можно во что угодно перекодировать. если не делать в оем то кодировка такая что невозможно русские буквы переделать в батнике уже никак
как что то получить - см батник приложеный

Автор: Scaramanga
Дата сообщения: 18.08.2010 11:50
Доброго времени суток. Такой вопрос.
Нужен батник который будет искать файл с определенны именем(пусть будет start.exe) в корне всех дисков. В случае если он найдет его то запускает, если нет то батник прекрашает работу.
Сейчас же у меня он если не находит файл выдает ошибку о том что файл не найден(
Автор: bomzzz
Дата сообщения: 18.08.2010 11:52
Scaramanga

примерно так попробуй

Цитата:

ECHO OFF
COLOR 9F
CLS
for /f %%i in ('fsutil fsinfo drives ^|more') do (
if exist %%iSTART.EXE echo %%iSTART.EXE
)
pause


Добавлено:
у меня работает

Добавлено:
чтоб было так как ты хочешь надо заменить
if exist %%iSTART.EXE echo %%iSTART.EXE
на
if exist %%iSTART.EXE %%iSTART.EXE
Автор: Scaramanga
Дата сообщения: 18.08.2010 12:12
bomzzz спасибо огромное. Все работает)
Автор: wolf0425
Дата сообщения: 18.08.2010 12:26

Цитата:
в принципе можно во что угодно перекодировать.
из ОЕМ уже поздно что-то перекодировать, если уникодное русское имя выдано программой в ОЕМ - оно в случае скобок и тире уже безнадежно испорчено, обратная перекодировка в 1251 произойдет неверно.
пример имени каталога для теста: "содержит «кавычки» и — тире", каталог тупо создать в GUI

Цитата:
если не делать в оем то кодировка такая что невозможно русские буквы переделать в батнике уже никак
ужасы то какие. сказки то прекращай рассказывать.
1251 - заметно более родная виндам кодировка, чем доставшаяся в наследство от ДОСа ОЕМ.
А переключить консоль в 1251 вообще не проблема, и редактировать батники в 1251 обычно удобнее.
в общем хочется чтоб правильно работало

Код: @echo off
chcp 1251
echo проверка кодировки
for /f %%a in ('cFOLDER-a.exe') do echo %%a
Автор: bomzzz
Дата сообщения: 18.08.2010 12:31
CURRENT.EXE

на тебе без оем кодировки делай с ней все что хочешь
Автор: wolf0425
Дата сообщения: 18.08.2010 14:09

Цитата:
на тебе без оем кодировки делай с ней все что хочешь
оно без никакой кодировки - ничего никуда не выдает, а current.exe >file даже файл не создает.

пс: что у тебя фонт на принтскрине стоит дефолтовый кривой неуникодный терминал - вижу, и что?
в комплекте виндов уникодный консольный фонт тоже есть - люсида, в ней 1251 и 866 буковки правильно показываются в консоли одновременно...
Автор: bomzzz
Дата сообщения: 18.08.2010 14:12
FOR /f "delims=*" %%I IN ( 'cFOLDER.EXE' ) DO SET G=%%I
ECHO %G%>MMM.TXT
а вот так выдает

Добавлено:
у меня и так выдает cFOLDER.exe>file
Автор: wolf0425
Дата сообщения: 18.08.2010 14:15

Цитата:
Добавлено:
у меня и так выдает cFOLDER.exe>file
ты файлик в предыдущем сообщении не тот приложил, или я что-то плохо вижу?
Автор: bomzzz
Дата сообщения: 18.08.2010 14:19
скачал тот который ты заказывал тоже выдает.
㩃䑜捯浵湥獴愠摮匠瑥楴杮屳潢穭空챜ﯲ
но тут на самом деле если перенос строки добавить будет нормально в той же идиотской кодировке которую невозможно ни во что перекодировать

Добавлено:
хахаха

Добавлено:
в алкепаде нормально открывается. в любом продвинутом блокноте
Автор: wolf0425
Дата сообщения: 18.08.2010 14:42

Цитата:
скачал тот который ты заказывал тоже выдает.
ну так у меня тот current.exe >file не пишет ничего. вообще. почему-то.

вот понять по той строке, в 1251 там или в utf-16 буковки - я по кодам пока не умею
Автор: bomzzz
Дата сообщения: 18.08.2010 14:53
в алкепаде пишет что это 1251.
Автор: wolf0425
Дата сообщения: 18.08.2010 19:09

Цитата:
у меня работает - это с нормальной кодировкой
что пробегавший ранее файлик, пишущий в ОЕМ, работает - никто не сомневается.
проблема что то, что ты в конце предыдущей страницы выдал c обещанием печати в ANSII - не печатает ничего ни прямо ни в файл.
Автор: bomzzz
Дата сообщения: 18.08.2010 19:13
работает он.

INBOX.EXE 3,50 КБ (3 584 байт)
блин как я там выкрутил пол килобайта.



Цитата:

ECHO OFF
COLOR 9F
CLS
FOR /f "delims=*" %%I IN ( 'INBOX.EXE /Њ®© Ў в-ЁзҐЈ/‚ўҐ¤ЁвҐ жҐ-л -  ЄҐдЁа/жҐ-  ЄҐдЁа : /450/275' ) DO SET G=%%I
ECHO %G%
pause


параметры
INBOX /заголовок окна/инфорамционный заголовок/подсказка в строке набора/Y позиция окна/X позиция окна

делитель строки надо менять потому что может вводится в батник хттп или фтп ссылка


INBOXPLUS.EXE 3,50 КБ (3 584 байт)

INBOXPLUS-.EXE 3,50 КБ (3 584 байт)
тоже самое только делитель коммандной строки обратный дефис ` - левая верхняя клавиша латинской раскладки клавиатуры (русская Ё)
Автор: wolf0425
Дата сообщения: 18.08.2010 19:15

Цитата:
у меня работает - это с нормальной кодировкой
это у тебя работает вовсе не тот файл, что ты выложил в конце предудущей страницы - тот каталог предлагает выбрать, а не файл.
Научись придумывать экзешникам такие имена, в которых ты сам не будешь путаться.
Автор: bomzzz
Дата сообщения: 18.08.2010 19:23
вот специально скачал с той страницы - видишь кодировка идиотская. наверно у тебя такой кодировки нету. все работает

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

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


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