Войти

Показать полную графическую версию : Ярлык для bat


Sisin
29-05-2019, 12:31
Некоторые batники было бы удобно запускать ярлыком, но к сожалению не всегда они срабатывают из-за того, что меняются пути при запуске ярлыка.
Т.е. запуская сам batник все работает, запуская его через ярлык - нет.

Есть ли какое-нибудь универсальное решение для таких случаев??

alpap
29-05-2019, 13:27
Например этот bat сначала проверяет есть ли вокруг себя ярлык с таким же именем и если нет создает? Но это произойдет в момент запуска bat, а запускать его надо ярлыком, т.е. ярлык уже должен быть или контроль должен делать какой-то другой процесс постоянно запущенный или запущенный с момента создания определенного (по имени, например) bat.
При перемещении bat относительно ярлыка в пределах диска ярлык запустит этот bat, иначе вы и сами должны понять что надо создавать ярлык заново.
Теперь попробуйте еще раз уточнить задачу.

YuS_2
29-05-2019, 14:09
Некоторые batники было бы удобно запускать ярлыком, но к сожалению не всегда они срабатывают из-за того, что меняются пути при запуске ярлыка.
Т.е. запуская сам batник все работает, запуская его через ярлык - нет. »
И здесь попробую стелепатировать :)
Рабочий каталог в ярлыке надо задать, для уверенной работы батника... это и будет %cd% для него, когда файлы будете на ярлык дропить :)
Ну, а если хочется, чтобы файлы складывались туда же, где они и находятся, то код сделайте таким:
@echo OFF
for %%i in (%*) do (
set "file=%%~nxi"
set "fld=%%~dpi"
call :sub
)
pause&exit /b

:sub
"C:\12\program.exe" /F "%file%" /D "%fld:~0,-1%" /T 2 /DW"
exit /b
:wink:

Sisin
29-05-2019, 14:14
И здесь попробую стелепатировать »

Меня это уже пугает :D

Ну, а если хочется, чтобы файлы складывались туда же, где они и находятся, то код сделайте таким: »

Я потестил и не понял чем отличается от предложенного Вами ранее:

@echo OFF
for %%i in (%*) do (
"C:\12\" /F "%%~nxi" /D "%cd%" /T 2 /DW"
)
exit

И тот и другой вроде работают одинаково.

YuS_2
29-05-2019, 14:36
не понял чем отличается »
Чтобы было понятно в чем отличие:
@echo off
echo CD: "%cd%"
for %%i in (%*) do (
set "file=%%~nxi"
set "fld=%%~dpi"
call :res
)
pause&exit /b

:res
echo folder: "%fld:~0,-1%"
echo file: "%file%"
exit /b
- пробуйте дропнуть файл из другого каталога, отличного от того, где лежит пакетник, непосредственно на сам файл сценария и на ярлык для этого сценария.

Sisin
29-05-2019, 15:05
Только если я делаю батник:
@echo OFF
for %%i in (%*) do (
set "file=%%~nxi"
set "fld=%%~dpi"
call :sub
)
pause&exit /b

:sub
"C:\12\program.exe" /F "%file%" /D "%fld:~0,-1%" /T 2 /DW"
exit /b

и кладу его по адресу D:\35\1.bat, делаю ярлык на рабочий стол и закидываю на него файл с подключенной флешки, батник не срабатывает. (Я выставлял рабочий каталог на ярлыке и оставлял по умолчанию)

YuS_2
29-05-2019, 15:23
и кладу его по адресу D:\35\1.bat, делаю ярлык на рабочий стол и закидываю на него файл с подключенной флешки, батник не срабатывает. »
Повторил алгоритм с батником из этого поста (http://forum.oszone.net/post-2873534-5.html) - всё срабатывает и пути показывает верные.
Тут моей телепатии уже не хватает, требуются подробности. :)
Он совсем не запускается или запускается и вылетает или что?

Sisin
29-05-2019, 16:01
Путем пальцетыка я понял, что проблема в set "file=%%~nxi".
Заменив на set "file=%%~dpi%%~nxi" все заработало.))))))




© OSzone.net 2001-2012