![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - имя "входящего" файла без расширения |
|
|
CMD/BAT - имя "входящего" файла без расширения
|
Новый участник Сообщения: 40 |
подскажите, может ли командная строка какой-либо переменной возвращать только ИМЯ "входящего" файла (мышкой закинутый в "Открыть с помощью" данного батника) без расширения? поясню, например, мне нужно переименовать расширение файла, а не добавить поверх существующего новое таким кодом:
|
|
Отправлено: 08:26, 15-06-2010 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать не знаю куда и как описать в поиске то что мне надо, по этому напишу сюда. если что поправте.. в другую ветку перенесу
вообщем есть бат файл который перехватывает параметры запуска другой программы и подменяет часть строки: set HOMEDIRnew=%APPDATA%%HOMEDIRR% set HOMEDIRold=%APPDATA%%LIBDIRRMll% Setlocal EnableDelayedExpansion set sSTRING=%* set sSTRING=%sSTRING: -dir %HOMEDIRold%=-dir !HOMEDIRnew!% Setlocal DisableDelayedExpansion переменная %HOMEDIRold% не находится,точнее не меняется. если написать так: то есть указать реальный путь то все работает. o:\1_TEST\0_FA6V\ меняется на %HOMEDIRnew% если путь указан через переменную то нет. я как понимаю он не может поймать переменную? как это поравить? |
Отправлено: 16:44, 08-01-2017 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать DonQuixote,
никаких особых проблем в вашем ребусе нет: @echo on set APPDATA=sph1 set HOMEDIRR=sph2 set LIBDIRRMll=sph3 set HOMEDIRnew=%APPDATA%%HOMEDIRR% set HOMEDIRold=%APPDATA%%LIBDIRRMll% echo %HOMEDIRnew% echo %HOMEDIRold% setlocal enabledelayedexpansion set sSTRING=-dir %HOMEDIRold% set sSTRING=!sSTRING:-dir %HOMEDIRold%=-dir %HOMEDIRnew%! echo %sSTRING% pause P.S. И кстати что это: такая запись неприемлема и работать не будет. |
Отправлено: 18:07, 08-01-2017 | #22 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать alpap, я не могу полный путь задать.. иначе бы не срашивал, мне именно нужна переменная,так как она меняется
я так раз 40 проверял не подхватывает переменную %HOMEDIRold% пишу статичный путь все ок.подмена идёт на %HOMEDIRnew% set sSTRING=%* это он присваивает этой переменной параметры запуска программы через которую был запущен и потом по коду заменяет на свои(например %HOMEDIRold% на %HOMEDIRnew%) то есть set sSTRING=%* она работает и заменяет то что надо, если не указывать в поиске на замену переменную.а делать так set sSTRING=%sSTRING: -dir o:\1_TEST\0_FA6V\=-dir !HOMEDIRnew!% то есть там длиная строка..причём разная бывает. но проверю..может просто в коде ошибка.. вот кину пример полный: @Echo on Setlocal EnableDelayedExpansion set sSTRING=%* set sSTRING=-Xmx3900m --user nikk --gameDir "o:\1_TEST\1client\.gam" --width 1290 --height 650 set APPDATA=o:\1_TEST\1client\ set HOMEDIRR=gamSV set LIBDIRRMll=.gam set HOMEDIRRMMM="%APPDATA%%HOMEDIRR%" set HOMEDIRRMMM2="%APPDATA%%LIBDIRRMll%" set PLAYER="name" echo off echo --gameDir %HOMEDIRRMMM% echo --gameDir %HOMEDIRRMMM2% echo on pause set sSTRING=%sSTRING:--user nikk=--username !PLAYER!% set sSTRING=%sSTRING:--gameDir %HOMEDIRRMMM2%=--gameDir !HOMEDIRRMMM!% pause Setlocal DisableDelayedExpansion :434343 Echo %sSTRING% >"o:\1_TEST\1client\CMD_cmdIM.txt" 2>&1! pause а вот --gameDir "o:\1_TEST\1client\.gam" на --gameDir "o:\1_TEST\1client\gamSV" не хочет так там переменная %HOMEDIRRMMM2% |
Последний раз редактировалось DonQuixote, 08-01-2017 в 19:20. Отправлено: 18:20, 08-01-2017 | #23 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата alpap:
|
|
Отправлено: 02:40, 09-01-2017 | #24 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:13, 09-01-2017 | #25 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать DonQuixote,
я выше показал как правильно а вы опять по-своему делаете используйте в set правильный синтаксис: видитие да, как правильно кавычки ставятся, если значение нужно в кавычках а если переменная в переменной если еще и в переменной %b% есть переменная, то: set "b=c%d%" set "g=n%m%" set "var=abg" call :pp1 "%%b:c%d%=c%e%%%" "%%g:n%m%=n%k%%%" exit :pp1 set "var=%var:a%~1=a%~2%" exit /b но опять же указал выше, используйте сразу вначале полный путь в переменной, зачем разбивать его на куски, кусок должен быть только один с неизвестной частью пути, которая и должна быть переменной. |
Отправлено: 13:33, 09-01-2017 | #26 |
Пользователь Сообщения: 52
|
Профиль | Отправить PM | Цитировать Цитата alpap:
%* - это ведь несколько параметров, а в кавычках ли они? » там по сути 1 длинная строка как на примере и переменныйх там тоже нет. Iska, alpap, для примера что присваивается переменной sSTRING=%* я выше написал set sSTRING=-Xmx3900m.........и т д то есть там бат рабочий кроме самой моей проблемы с переменной не выходит по примерам вашим батник выше который под коректировать. скобки я тоже ставил ..толку ноль. эта строка:set sSTRING=%sSTRING:--gameDir %HOMEDIRRMMM2%=--gameDir !HOMEDIRRMMM!% не работает вы если что извините я не спец..любитель я не знаю в чём косяк и как починил но заменил этой строчкой не рабочую и теперь меняет)всем спасибо) |
Последний раз редактировалось DonQuixote, 10-01-2017 в 13:52. Отправлено: 15:34, 09-01-2017 | #27 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Почему Windows при запуске файла с именем "start.exe" показывает кнопки как "Пуск"? | Котяра | Хочу все знать | 9 | 22-06-2009 13:48 | |
Подмена файла "hosts" для запрета "Одноклассников" | D_Master | Хочу все знать | 10 | 17-10-2008 15:40 | |
Dial-Up - Недоступно "высокоскоростное подключение запрашивающее имя пользователя и пароль" | XaHyMaH | Сетевые технологии | 4 | 19-04-2008 14:31 | |
Изменение "Мой компьютер" на "Имя текущего пользователя на имя компьютера" | shcval | Microsoft Windows 2000/XP | 1 | 15-12-2006 21:01 | |
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") | submaster | Microsoft Windows NT/2000/2003 | 5 | 13-09-2006 12:29 |
|