| Другое > Hard'n'Soft |
| Помощь с bat'ником |
| (1/2) > >> |
| Guyver(X.B.M.):
Парни, может, кто-нибудь поможет... Допустим, если написать echo::>> """File 233.txt" то в файл File 233.txt запишется два символа ":" в ANSI кодировке и ещё 2 символа - окончания строки (0D 0A в hex). В результате в hex-виде это будет 3A 3A 0D 0A А можно ли записать таким же макаром в файл сразу hex-коды, например 00 00. Как это задать в батнике? И можно ли убрать эти 2 символа окончания? Кто разбирается, помогите! Очень нужно... |
| Skay:
Guyver(X.B.M.), батник принципиально? под виндой ведь еще есть VBS, для этого решение вот http://forum.script-coding.com/viewtopic.php?pid=30067#p30067 а батники с бинарниками работать не умеют Хотя вот нагуглил, но как то оч громоздко... http://forum.script-coding.com/viewtopic.php?id=2885 |
| Guyver(X.B.M.):
Принципиально именно с батником... |
| Skay:
в общем нагуглил я тебе способ) (самому стало интересно) --- Код: ---@echo off <nul set /p strTemp=Ves etot text>>b.txt <nul set /p strTemp=budet nahodit'sya>>b.txt <nul set /p strTemp=na odnoy stroke.>>b.txt --- Конец кода --- вот так будет без 0D 0A полностью чтоб писать бинарник исопльзуй предварительно http://metajiji.blogspot.ru/2013/11/hex-to-string-cmd-bat-function.html для конвертации из хекс в стринг ) вот такой костыль получится напрямую редактировать бинарник - ссылка постом выше. |
| DeniSS:
Слабо представляю себе, можно попробовать разобраться в этом: https://github.com/FrankWestlake/CMD-scripts/blob/master/hed.cmd Ещё есть павершелл: --- Код: ---$path = $env:UserProfile + "\Desktop\test.bin"; [Byte[]] $data = 0x48,0x45,0x4c,0x0a, 0x4c,0x4f,0x21; [System.IO.File]::WriteAllBytes($path, $data); --- Конец кода --- |
| Skay:
--- Цитата ---Ещё есть павершелл: --- Конец цитаты --- увы, сказали принципиально батник) Добавлено позже: увы, мой способ не работает. попробовал(( |
| Guyver(X.B.M.):
Эх... Жаль, очень жаль... Так хотелось бы с помощью батника. Это так удобно - блокнотом открыл, написал за пару сек, запустил - и не надо никакой среды программирования и т.д. |
| Skay:
Идем сюда https://sites.google.com/site/dbenhamfiles/ качаем CharLib_bat.txt, переименовываем в CharLib.bat читаем справку, либо через блокнот, либо в командной строке набираем charlib help рядом с этим батником создаем свой, и уже из него вызываем нужные функции, нарпимер --- Код: ---setlocal enableDelayedExpansion set hex=48656C6C6F576F726C64 call charlib hex2str hex str <nul >copy.bin set /p ".=!str!" type copy.bin --- Конец кода --- 48656C6C6F576F726C64 -> HelloWorld или --- Код: ---call charlib chr 65 myChar call charlib asc myChar 0 myCode echo myChar=%myChar% echo myCode=%myCode% --- Конец кода --- вообще в библиотечке много интересного) Но, с функцией hex2str есть проблемки, с ней не записать так в файл 00 (NULL) и еще некоторые - в хэлпе про это написано. Как вариант можно через опцию заменить на какую то произвольную подстроку, а после этого уже написать отдельную функцию, и ей в файле поправить на нужный символ. --- Код: ---setlocal enableDelayedExpansion set hex=48656C6C6F00576F726C64 call charlib hex2str hex str <nul >copy.bin set /p ".=!str!" type copy.bin --- Конец кода --- 48656C6C6F00576F726C64 -> Hello<NUL>World --- Код: ---setlocal enableDelayedExpansion set hex=48656C6C6F00576F726C64 call charlib hex2str /NstrTq hex str <nul >copy.bin set /p ".=!str!" type copy.bin --- Конец кода --- 48656C6C6F00576F726C64 -> HellostrTqWorld в общем я хз что ты там собрался кодить так... Но вообще, ни vbs (VisualBasicScript), ни повершелл - не требуют никако среды, это стандартные компоненты винды) при этом куда более функциональные по сравнению с батниками (которые наследие с досовых времен) на vbs к примеру даже макросы в офисах MS пишутся.. |
| Guyver(X.B.M.):
Спасибо! Хоть теперь без 0D0A всё получается. Всё сделал как надо. Только вот бы теперь забить файл символами 00 - вот это пока не получается... Причём без второго батника, а из тела первого, дописав функцию прямо в его начало. Так же можно? Чтобы с двумя батниками не возиться... Простую функцию только для 00, без всех других hex преобразований. Файл именно 00 хотелось бы забить... Пока не выходит, но я не сдаюсь... |
| GalaxyBot_00:
это не то? http://herli.ru/1264-kak-sgenerirovat-mnogo-pustyx-fajlov.html |
| Skay:
Guyver(X.B.M.), мое самое первое сообщение в теме, вторая ссыль на батник для редактирования бинарника., смотришь смещение в своей hex строке, переходишь на него, заменяешь га 00 следующие лишение - удаляешь. в один файл легко, читай справку про call. |
| Guyver(X.B.M.):
спасибо, проглядел первое сообщение твоё невнимательно! ;о) |
| Leprikon:
Дабы не засорять форум спрошу здесь. Вобщем мне нужно сделать батник чтобы переименовать папку, запустить ехе а после завершения ехе переименовать папку обратно. Это нужно чтоб поставить 2 несовместимых мода на одну игру. я сделал так rename gamedata1 gamedata Stalker-COP.exe rename gamedata gamedata1 но почемуто папки не переимновываются. Добавлено позже: все я понял в чем дело просто Stalker-COP.exe просто запускает игру а процесс в xrEngine.exe как сделать чтобы батник проверял наличие этого процесса а не шел дальше? |
| DeniSS:
--- Код: ---START /WAIT /B Stalker-COP.exe --- Конец кода --- Например. |
| Leprikon:
--- Цитата: DeniSS от 06 Март 2014, 20:29:05 --- --- Код: ---START /WAIT /B Stalker-COP.exe --- Конец кода --- Например. --- Конец цитаты --- неа некатит я ж говорю Stalker-COP.exe только запускает игру и отключается а игра это xrEngine.exe поэтому папки сразу переименовываются обратно если сделать так rename gamedata1 gamedata Stalker-COP.exe xrEngine.exe rename gamedata gamedata1 то мод работает, но xrEngine.exe запускается 2 раза и его приходится отключать вручную через диспетчер задач! а если напрямую через xrEngine.exe то выыходит ошибка. :neznayu: |
| DeniSS:
Тогда --- Код: ---REN gamedata1 gamedata Stalker-COP.exe PAUSE REN gamedata gamedata1 --- Конец кода --- Наигрался, вышел, нажал любую клавишу и готово :) |
| Leprikon:
--- Цитата: DeniSS от 06 Март 2014, 20:50:34 ---Тогда --- Код: ---REN gamedata1 gamedata Stalker-COP.exe PAUSE REN gamedata gamedata1 --- Конец кода --- Наигрался, вышел, нажал любую клавишу и готово :) --- Конец цитаты --- ВО то что надо! :jumpy: :thumbup: :gamer: |
| Yoti:
--- Цитата: Skay от 29 Январь 2014, 21:36:32 ---в общем нагуглил я тебе способ) (самому стало интересно) --- Конец цитаты --- Шикарно =) |
| Photon9:
Возник небольшой вопросец. Можно ли создать батник который будет запускать желаемую программу в режиме совместимости с требуемой осью и от имени админа? Примером мне надо сделать такой для инсталера игры, чтоб совместимость была с Windows 7 и запуск от админа. Понятно что проще выставить эти параметры в свойствах экзешника, но как показал опыт для некоторых людей сия процедура равна запуску космического корабля :) |
| cptPauer:
Вроде бы в Microsoft Compatibility Toolkit можно выставить подобное (и админа, и совместимость). Там куча всего, будет странно, если нету таких базовых вещей. Потои сделать патч совместимости и добавить его батником/инсталлятором в систему, при первой установке игры. --- Код: ---sdbinst.exe -q yourpatch.sdb --- Конец кода --- Иначе надо будет извращаться типо как тут http://stackoverflow.com/questions/19613846/how-to-add-administrator-rights-in-a-bat-file Правда, у тебя не получится поменять права файла или добавить патч совместимости, если установщик сам без прав админа. Но можно проверить есть ли права админа через батник и выдать предупреждение. --- Код: ---@echo off echo проверка прав админа echo. pause echo. net session >nul 2>&1 if %errorLevel% == 0 ( echo ОТЛИЧНО: есть права админа&goto allright ) else ( echo ПЕЧАЛЬНО: нету прав админа.&goto next ) pause >nul :next echo без прав админа скрипт закроется ping -n 1 -w 5000 192.168.254.254 >nul exit :allright echo. echo дальше мог быть скрипт.. echo. pause --- Конец кода --- |
| Навигация |
| Главная страница сообщений |
| Следующая страница |