![]() |
При конверте .bat в .exe не работают переменные
Здравствуйте, написал батник, при конверте которого в .exe через программу "Quick Batch file compiler" перестают работать некоторые %переменные%.
Сам батник работает, но при конверте которого в .exe перестаёт работать. Чтобы понять в чём проблема, оставил батнике лишь строчку attrib +h %0 и переконвертировал в .exe и запустив, понял, что не работают переменныя %0 и скорей всего остальные его расширения. Код:
@echo off Код:
@echo off Как преодолеть эту проблему, что можно сделать? Ps: Тут вопросик всплыл, что за переменная %* ? Видел в чужих сценариях. |
Попробуйте Bat to Exe Converter, при конвертации им ваш батник отрабатывает корректно.
%* - это все аргументы, переданные скрипту, без разбора на %1 - %9. |
DesmondTruman, я думаю, дело в том, что на самом деле компилятор создает, по сути, нечто вроде SFX-архива - т.е. программу EXE, которая при запуске создаёт батник в папке Temp. Поэтому %0 будет относиться к этому файлу в папке Temp.
Не сочтите за занудство... а не вирус ли пишете? Какой-то своеобразный функционал... |
Anonymоus Спасибо, вечером проверю и отпишусь.
Котяра Интересная мысль, проверю вечером изменив пару строчек. Цитата:
|
Котяра Всё совершенно правильно, так как вы и сказали. Проверил с echo %0 > log.txt .
И еще инфа c офиц. сайта программы : И не пойму, почему же %0 действует относительно батника с temp, а например > log.txt действует относительно exeшника? Anonymоus Скачал, проверил, увы так же как и "Quick Batch file compiler" создаёт bat в %temp%. Не понимаю как он у вас заработал... Под словами "отрабатывает корректно" вы что имели в виду? То что вы запуcтили .exe файл и он стал невидимым и скопировал себя в %systemroot% ? Есть какие то еще варианты, подобные %0, чтобы считывать свою дерикторию\имя\расширение ? |
DesmondTruman, прошу прощения, не до конца протестировал.
Выбираете при компиляции на первой вкладке, там, где Working directory - temporary directory (он все равно во временной создаваться будет, это похоже болезнь всех подобных "компиляторов"), отмечаете чекбокс "submit current directory" - в %1 будет путь к тому месту, откуда запускается откомпилированый экзешник. И правите код скрипта, как в этом примере: Код:
@echo off Код:
%cd%\%~n0.exe |
Anonymоus Спасибо вам огромное, работает.
Только я одного не понял, как вы узнали что в аргументе %1 передаётся путь ехешника? |
DesmondTruman, иногда бывает полезно читать справку к используемым программам, в случае с "Bat to Exe Converter", если отметить чекбокс "Submit current directory", то последним параметром как раз и будет передаваться реальный путь к экзешнику, а не распакованному батнику в %TEMP%. Так как других параметров при запуске у нас нету, то этот путь оказывается в %1.
|
Anonymоus Я бы прочитал, если бы он был в программе, но его нет (по крайней мере в той, который вы дали), и на их сайте не увидел, поэтому и спросил.
|
fdko.de ⇒ Bat to Exe Converter ⇒ Download ⇒ Bat_To_Exe_Converter.zip ⇒ help.chm ⇒ English ⇒ Options ⇒ • Submit current directory Submit the current directory as the last parameter
Вот тут об этом было написано, файл помощи лежит прямо в корне скачиваемого с сайта архива с программой. |
Цитата:
Код:
hh.exe "mk:@MSITStore:C:\Program%20Files\BatToExeConverter\Help%20[English].chm::/index.html#func" |
Я сам ищу такую программу, которая бы переделывала cmd/bat в exe, а не делала sfx-архив.
Для себя сам сделал очень просто: сделал 7zsfx, в его конфиге RunProgram="_Go.cmd %%S", а в самом батнике Set Sourse=%~1 А мне хочется, чтоб мой код никто не увидел. Выдернуть из папки %temp% любой сможет :( Р.S. За что Quick Batch file compiler берут деньги? %) |
Время: 18:37. |
Время: 18:37.
© OSzone.net 2001-