Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - имя "входящего" файла без расширения

Ответить
Настройки темы
CMD/BAT - имя "входящего" файла без расширения

Аватара для Radiant

Новый участник


Сообщения: 40
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


подскажите, может ли командная строка какой-либо переменной возвращать только ИМЯ "входящего" файла (мышкой закинутый в "Открыть с помощью" данного батника) без расширения? поясню, например, мне нужно переименовать расширение файла, а не добавить поверх существующего новое таким кодом:
Код: Выделить весь код
MOVE %1 %1.AVI

Отправлено: 08:26, 15-06-2010

 

Пользователь


Сообщения: 52
Благодарности: 4

Профиль | Отправить PM | Цитировать


не знаю куда и как описать в поиске то что мне надо, по этому напишу сюда. если что поправте.. в другую ветку перенесу
вообщем есть бат файл который перехватывает параметры запуска другой программы и подменяет часть строки:
Код: Выделить весь код
set HOMEDIRnew=%APPDATA%%HOMEDIRR%
set HOMEDIRold=%APPDATA%%LIBDIRRMll%
Setlocal EnableDelayedExpansion
set sSTRING=%*
set sSTRING=%sSTRING: -dir %HOMEDIRold%=-dir !HOMEDIRnew!%
Setlocal DisableDelayedExpansion
ищет -dir %HOMEDIRold% и заменяет на -dir %HOMEDIRnew%
переменная %HOMEDIRold% не находится,точнее не меняется.
если написать так:
Код: Выделить весь код
set sSTRING=%sSTRING: -dir o:\1_TEST\0_FA6V\=-dir !HOMEDIRnew!%
то есть указать реальный путь то все работает. o:\1_TEST\0_FA6V\ меняется на %HOMEDIRnew%
если путь указан через переменную то нет.
я как понимаю он не может поймать переменную?
как это поравить?

Отправлено: 16:44, 08-01-2017 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить 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
кроме одной важной - не надо делать так как вы делаете, задайте сразу полные пути, в которых уже могут быть сразу относительные и переменных и проблем сразу станет меньше или задавайте пути параметром через call.

P.S.
И кстати что это:
Код: Выделить весь код
set sSTRING=%*
такая запись неприемлема и работать не будет.

Отправлено: 18:07, 08-01-2017 | #22


Пользователь


Сообщения: 52
Благодарности: 4

Профиль | Отправить PM | Цитировать


alpap, я не могу полный путь задать.. иначе бы не срашивал, мне именно нужна переменная,так как она меняется
я так
Код: Выделить весь код
set sSTRING=!sSTRING:-dir %HOMEDIRold%=-dir %HOMEDIRnew%!
раз 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
видно что --user nikk он меняет на --user name
а вот --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
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата alpap:
И кстати что это:
Код: Выделить весь код
set sSTRING=%*
такая запись неприемлема и работать не будет. »
Синтаксически такая конструкция приемлема. Насчёт «работать» — в данном случае не разбирался.
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:40, 09-01-2017 | #24


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Iska,
да я имелл ввиду что ведь так нужно:
Код: Выделить весь код
set "sSTRING=%*"
%* - это ведь несколько параметров, а в кавычках ли они?
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:13, 09-01-2017 | #25


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


DonQuixote,
я выше показал как правильно а вы опять по-своему делаете
используйте в set правильный синтаксис:
Код: Выделить весь код
set "имя переменной=значение"
видитие да, как правильно кавычки ставятся, если значение нужно в кавычках
Код: Выделить весь код
set "имя переменной="значение""
а если переменная в переменной
Код: Выделить весь код
Setlocal EnableDelayedExpansion
set "var=!var:a%b%=a%c%!"
если еще и в переменной %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
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата alpap:
%* - это ведь несколько параметров, а в кавычках ли они? »
там по сути 1 длинная строка как на примере и переменныйх там тоже нет.
Iska, alpap, для примера что присваивается переменной sSTRING=%*
я выше написал set sSTRING=-Xmx3900m.........и т д то есть там бат рабочий кроме самой моей проблемы с переменной

не выходит по примерам вашим батник выше который под коректировать. скобки я тоже ставил ..толку ноль.
эта строка:set sSTRING=%sSTRING:--gameDir %HOMEDIRRMMM2%=--gameDir !HOMEDIRRMMM!%
не работает
вы если что извините я не спец..любитель
я не знаю в чём косяк и как починил но заменил этой строчкой не рабочую
Код: Выделить весь код
set "b=%HOMEDIRRMMM2%"
set "c="%HOMEDIRRMMM%""
set "sSTRING=!sSTRING:gameDir %b%=gameDir %c%!"
и теперь меняет)всем спасибо)

Последний раз редактировалось DonQuixote, 10-01-2017 в 13:52.


Отправлено: 15:34, 09-01-2017 | #27



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - имя "входящего" файла без расширения

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Почему 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




 
Переход