Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Запуск программы с параметрами (http://forum.oszone.net/showthread.php?t=283630)

Yo Den 14-06-2014 20:22 2364080

Запуск программы с параметрами
 
Нужно, чтобы программа 123.exe запускалась с параметром -"название папки в которой она находится в данный момент (при этом название папки может меняться, поэтому параметр динамичен)". Вот так все работает:

@echo off
set name=%~dp0
for /d %%a in ("%name:~0,-1%") do set name=%%~na
cd ..
start 123.exe -%name%

Но тут я не особо понимаю, как это реализовано, поэтому спрашиваю, есть ли в нём что-то лишнее, можно ли его сократить?

Georgio 14-06-2014 21:17 2364099

Код:

@echo off
set "name=%~dp0"
for /d %%a in ("%name:~0,-1%") do start "" "..\123.exe" -%%~nxa


Yo Den 14-06-2014 22:26 2364121

Цитата:

Цитата Georgio
@echo off
set "name=%~dp0"
for /d %%a in ("%name:~0,-1%") do start "" "..\123.exe" -%%~nxa »

спасибо. а что все-таки означает "("%name:~0,-1%")"?

Iska 14-06-2014 22:36 2364124

Можно попробовать:
Код:

start "" "123.exe" -%~dp0\.
Непонятно, зачем «..».

Цитата:

Цитата Yo Den
а что все-таки означает "("%name:~0,-1%")"? »

Содержимое переменной окружения %name% без последнего символа (в данном случае завершающий обратный слэш):
Код:

set /?

Yo Den 14-06-2014 23:00 2364132

Цитата:

Цитата Iska
start "" "123.exe" -%~dp0\. »

не, так не работает, способ Georgio подошел.
Цитата:

Цитата Iska
Непонятно, зачем «..». »

123.exe находится вверх на каталог
Цитата:

Цитата Iska
Содержимое переменной окружения %name% без последнего символа (в данном случае завершающий обратный слэш): »

а если мне не обязательно убирать завершающий слеш, что изменить в этой строке (в целях экономии символов)?

Iska 14-06-2014 23:14 2364138

Цитата:

Цитата Yo Den
123.exe находится вверх на каталог »

Тогда формулируйте:
Цитата:

Цитата Yo Den
чтобы программа 123.exe запускалась с параметром -"название папки в которой она находится в данный момент »

точнее.

Цитата:

Цитата Yo Den
не, так не работает, »

Если приложение у Вас находится в родительском каталоге:
Код:

start "" "..\123.exe" -%~dp0\.
Цитата:

Цитата Yo Den
а если мне не обязательно убирать завершающий слеш, что изменить в этой строке (в целях экономии символов)? »

Перефразируйте вопрос.

Yo Den 15-06-2014 00:02 2364149

Цитата:

Цитата Iska
Тогда формулируйте:
Цитата Yo Den:
чтобы программа 123.exe запускалась с параметром -"название папки в которой она находится в данный момент »
точнее. »

да, ошибся тут. В папке с 123.ехе есть папка (к примеру она называется newfile), в которой есть батник, который должен запускать программу с параметром -newfile (где newfile, название папки, но оно как я уже говорил, будет постоянно менятся, так что должно быть динамическим).

Цитата:

Цитата Iska
а если мне не обязательно убирать завершающий слеш, что изменить в этой строке (в целях экономии символов)?Перефразируйте вопрос. » »

ну то есть программу можно запускать и со слешем в конце параметра: 123.exe -newfile/ .Как сократить "%name:~0,-1%", чтобы не удалялся слеш?

Iska 15-06-2014 00:21 2364157

Цитата:

Цитата Yo Den
ну то есть программу можно запускать и со слешем в конце параметра: 123.exe -newfile/ .Как сократить "%name:~0,-1%", чтобы не удалялся слеш? »

Так:
Цитата:

start "" "..\123.exe" -%~dp0
О каком приложении идёт речь — «123.exe»?

Georgio 15-06-2014 06:50 2364188

Yo Den, сократил код до одной строки:
Код:

@for %%a in ("%~dp0.") do @start "" "..\123.exe" -%%~nxa
.


Время: 15:25.

Время: 15:25.
© OSzone.net 2001-