Переменная %~dp0 включает в себя концевой слеш и дублировать его в данной строке не требуется.Skif_off писал(а): Код:
start %~dp0\TOTALCMD.EXE /i=%~dp0\wincmd9x.ini
%PROCESSOR_ARCHITECTURE% в wincmd.ini и совместимость Win9X
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
Я понял, уточнение касалось только VBS.Flasher писал(а):Я имел в виду
Это спорно.Flasher писал(а):Во всех случаях нужен как минимум ключ /N.
[cut]Известно, только не new ActiveX, а new ActiveXObject
"Бодаться" - это про удвоение кавычек в VBS, где-то в половине случаев путался.
start написал на автомате, в последних батниках часто использовал start /wait.
О скобках в VBS: это да, написал как привычнее в JScript.[/cut]
Поторопилсяgora писал(а):Переменная %~dp0 включает в себя концевой слеш и дублировать его в данной строке не требуется.
P.S. Спасибо за указание на ошибки, ну редко пишу батники и VBS-скрипты, да
Где там было про vbs?Skif_off писал(а):Я понял, уточнение касалось только VBS.
Почему же? Например, стоит запрет, а процесс ТС завис в трее.Skif_off писал(а):Это спорно.
[cut]И что у тебя при замене получится? new ActiveXObjectObject
А на vbs так:
Код: Выделить всё
With CreateObject("WScript.Shell") .Run "TOTALCMD.EXE /N /i=""" & .CurrentDirectory & "\wincmd9x.ini""" End WithАвтору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Наверное, где-то что-то пропустил, ибо теперь уже не понял. Сделаю вид, что понял, дабы не оффтопить.Flasher писал(а):Не бред, если понимаешь о чём речь и с чьей стороны разбивка. Читаем внимательно приведённые топики.
Спасибо, кэп! Не везде ж я админом могу ковыряться. Не катит.Flasher писал(а):Разблокируй. Там можно что угодно заблокировать, в т.ч. запуск Тотала.
Да, кавычек и вправду нет. За "%~dp0" спасибо, как-то даже и мысли не пришло его притулить. Но всё-равно это полдела, ибо в результате всего нужно избавиться от батников и нескольких wincmd.ini.Skif_off писал(а):start %~dp0\TOTALCMD.EXE /i=%~dp0\wincmd9x.ini
Кстати, да. Мне нужен. И cmd ругается на него, ибо не понимает такой внезапности. ЧЯДНТ?Skif_off писал(а):Это спорно.Flasher писал(а):Во всех случаях нужен как минимум ключ /N.
Если бы понял, не написал ругательство. Речь шла о специальном разделении, а не предусмотренном изначально.Mellomann писал(а):Сделаю вид, что понял, дабы не оффтопить.
Ну, тогда мирись с трудностями, где ни Тотал не запустить, ни батник, ни ещё что-нибудь. Чего стонать-то? Всякое проходили.Mellomann писал(а):Спасибо, кэп! Не везде ж я админом могу ковыряться. Не катит.
От батников или от консольного окна?Mellomann писал(а):нужно избавиться от батников
Интересно бы узнать, отчего такая внезапность. На /i не ругается?Mellomann писал(а):И cmd ругается на него, ибо не понимает такой внезапности. ЧЯДНТ?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
От первого. Второе поборото вызовом через start и последующим exit.Flasher писал(а):От батников или от консольного окна?
Выводит:Flasher писал(а):Интересно бы узнать, отчего такая внезапность. На /i не ругается?
Код: Выделить всё
Недопустимый ключ: "/N".Код: Выделить всё
@color 0A
@if not exist "%ProgramW6432%" (@color 0C & @echo Обнаружено не x64 окружение! & @pause & @GOTO END)
@echo Работам в %~dp0
@set /p tcbit=32 или 64?
@GOTO %tcbit%
:32
@start "%~dp0\totalcmd.exe" /N /I="%~dp0\WincmdU64.ini"
@GOTO END
:64
@start "%~dp0\totalcmd64.exe" /N /I="%~dp0\Wincmd64.ini"
@GOTO END
:END
@exitВ прошлой версии всё работало: [cut]
Код: Выделить всё
@color 0A
@if not exist "%ProgramW6432%" (@color 0C & @echo Обнаружено не x64 окружение! & @pause & @GOTO END)
@if exist "C:\PROGRA~1\TC\TOTALCMD.EXE" (@set tcdir=c:\PROGRA~1\TC) else @if exist "C:\PROGRA~2\TC\TOTALCMD.EXE" (@set tcdir=c:\PROGRA~2\TC)
@echo Работает для пути %tcdir%\
@set /p tcbit=Версия Total Commander для запуска (32 или 64)...
@GOTO %tcbit%
:32
@start %tcdir%\totalcmd.exe /N /I=%tcdir%\WincmdU64.ini
@GOTO END
:64
@start %tcdir%\totalcmd64.exe /N /I=%tcdir%\Wincmd64.ini
@GOTO END
:END
@exitЗ.Ы.
Кажись, придумал часть решения! Костыли, но всё же...
"%PROCESSOR_ARCHITECTURE%" в Win9X нет, поэтому выводится ноль символов. А это значит, под
RAR="%COMMANDER_PATH%\Plugins\arc\Rar_%PROCESSOR_ARCHITECTURE%.exe" -m5 -s -t
надо обозвать файлы
C:\Program Files\TC\Plugins\arc\Rar_.exe
C:\Program Files\TC\Plugins\arc\Rar_amd64.exe
C:\Program Files\TC\Plugins\arc\Rar_x86.exe
Как раз подсунется RAR версии 3.93 для некросистем и новые 5.хх для ХР+.
Осталось так же AkelPad, default.bar и прочий расходняк повесить. Правда, три варианта каждого как-то напряжно. Зато работает.
Хорошо хоть IA64 почила с миром, не надо под неё огород лепить...
А не проще вместо @ перед каждой командой один раз в первой написать @echo off?Mellomann писал(а):Вот мой новый батник:
И не логичнее ли при обнаружении 32-битной системы просто делать goto 32?
Я бы всё равно оставил переменную tcdir, можно сразу COMMANDER_PATH определять, можно просто в %~dp0, если в 9х поддерживается ~.
Кстати, проверил, она и не поддерживается. Вместо %~dp0 пиши просто %0\.. (всегда выручало), но не заворачивай тогда в кавычки:
Код: Выделить всё
start %0\..\totalcmd.exe /N /I=%0\..\wincmdU64.iniКод: Выделить всё
start %0"\..\totalcmd.exe" /N /I=%0"\..\wincmdU64.ini"Я обычно чихаю на такие прибабахи (в батниках, в Visual Studio и т.п.) и специально ставлю разделительный слэш для читабельности.gora писал(а):Переменная %~dp0 включает в себя концевой слеш и дублировать его в данной строке не требуется.
Ой-вай! Тут явно не то, тогда батник запускает "TCwin64sel_NEW.cmd\TOTALCMD.EXE" - это будет за гранью добра...MVV писал(а):Вместо %~dp0 пиши просто %0\.. (всегда выручало).
Старая привычка, зато надёжно.MVV писал(а): А не проще вместо @ перед каждой командой один раз в первой написать @echo off?
goto 32 даёт запуск тотала с конфигой для win64, на win32 оно не надо.MVV писал(а):при обнаружении 32-битной системы просто делать goto 32?
На win9X этот бат не надо, он только для х64MVV писал(а):%~dp0, если в 9х поддерживается
Кстати, отдельной строкой вынес, проверил:
@"%~dp0\totalcmd64.exe" /N /I="%~dp0\Wincmd64.ini"
работает, но стоит дописать
@start "%~dp0\totalcmd64.exe" /N /I="%~dp0\Wincmd64.ini"
и облом.
Кавычки есть, но толку нет.
Последний раз редактировалось Mellomann Вс сен 20, 2015 17:30, всего редактировалось 1 раз.
Сдаётся, что ты что-то не так пишешь. На любой винде %0\.. указывает на папку, где лежит батник, т.к. операционка корректно разрешает такой путь. Проверил на тестовом батнике - запускает правильно:Ой-вай! Тут явно не то, тогда батник запускает "TCwin64sel_NEW.cmd\TOTALCMD.EXE" - это будет за гранью добра...
Код: Выделить всё
start "" %0\..\test.exeСтранная логика, пишешь 32, а запускается для 64-битной... И имя инишника тоже непонятное - wincmdU64. Я бы для 32-битной делал wincmd32, а для 64-битной - wincmd64 (или для одной из них просто wincmd).goto 32 даёт запуск тотала с конфигой для win64, на win32 оно не надо.
Я ж подумал, что батник ты пишешь как раз для древней, ибо в новой можно тупо в конфиге Autorun всё определить.На win9X этот бат не надо, он только для х64
MVV
У меня вообще хитро:
win32+TC32 - запускаем totalcmd.exe (на стандартный конфиг)
win64+TC64 - запускаем totalcmd.exe /N /I="%~dp0\Wincmd64.ini"
win64+TC32 - запускаем totalcmd.exe /N /I="%~dp0\WincmdU64.ini"
При этом "WincmdU64.ini" - это набор строк RedirectSection на Wincmd.ini и Wincmd64.ini.
Вот такой "опыт разработки и внедрения гибких решений".
Все пляски ради х64. Само по себе х32 уже отлажено со старых времён, а вот х64 добавляется по мере развития поверх существующего.
У меня вообще хитро:
win32+TC32 - запускаем totalcmd.exe (на стандартный конфиг)
win64+TC64 - запускаем totalcmd.exe /N /I="%~dp0\Wincmd64.ini"
win64+TC32 - запускаем totalcmd.exe /N /I="%~dp0\WincmdU64.ini"
При этом "WincmdU64.ini" - это набор строк RedirectSection на Wincmd.ini и Wincmd64.ini.
Вот такой "опыт разработки и внедрения гибких решений".
Все пляски ради х64. Само по себе х32 уже отлажено со старых времён, а вот х64 добавляется по мере развития поверх существующего.
Только заменой на скрипт с записью значений в ini и запуском ТС. Кстати, vbs, как впрочем и любой другой скрипт, можно в exe скомпилить.Mellomann писал(а):От первого.
И какое же это избавление от чёрного окна?Mellomann писал(а):Второе поборото вызовом через start и последующим exit.
Только из системной оболочки и консоли. А как же исходная задача с Editor= и т. п.? %PROCESSOR_ARCHITECTURE% тут никак не годится.Mellomann писал(а):Зато работает.
И, кстати, насчёт бата: коли он в корне ТС, писать путь к TOTALCMD.EXE в нём не имеет смысла.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Если батник запускать двойным кликом, рабочая папка будет правильной, а если из другой папки, то нет. И если с правами админа его запускать, рабочая папка будет C:\Windows\System32, и без указания пути батник работать не будет.И, кстати, насчёт бата: коли он в корне ТС, писать путь к TOTALCMD.EXE в нём не имеет смысла.
Слово "скомпилить" не совсем применимо к скриптам, которые просто пихаются в запускающий их экзешник.Кстати, vbs, как впрочем и любой другой скрипт, можно в exe скомпилить.
Последний раз редактировалось MVV Пн сен 21, 2015 10:22, всего редактировалось 1 раз.
а это интересно...Flasher писал(а):vbs, как впрочем и любой другой скрипт, можно в exe скомпилить.
Вполне себе вариант. Ну мелькнёт на полсекунды - и ладно. Главное - не висит пока работает ТС.Flasher писал(а):И какое же это избавление от чёрного окна?Mellomann писал(а):Второе поборото вызовом через start и последующим exit.
Что в самый раз.Flasher писал(а):Только из системной оболочки и консоли.Mellomann писал(а):Зато работает.
Вполне себе прокатило, вчера оттестировал на win7 - работает. Осталось на некрофилах ещё погонять.Flasher писал(а): А как же исходная задача с Editor= и т. п.? %PROCESSOR_ARCHITECTURE% тут никак не годится.
Правда, пришлось пути менять, по аналогии с RAR.EXE...
Это ж гениально! Просто и гениально! Даже пути (к ТС) с пробелами не делают проблем.Flasher писал(а):И, кстати, насчёт бата: коли он в корне ТС, писать путь к TOTALCMD.EXE в нём не имеет смысла.
Вариант с путем вроде выглядит ненамного сложнее:Mellomann писал(а):@start totalcmd.exe /N /I="%~dp0\Wincmd0.ini"
Это ж гениально! Просто и гениально! Даже пути (к ТС) с пробелами не делают проблем.
Код: Выделить всё
start "%~dp0\totalcmd.exe" /N /I="%~dp0\Wincmd0.ini"Я и написал "коли он в корне ТС".MVV писал(а):а если из другой папки, то нет
Из под юзера? Из под админа ничего подобного не происходит.MVV писал(а):И если с правами админа его запускать, рабочая папка будет C:\Windows\System32
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.