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

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

Sisin 29-05-2019 12:31 2873498

Ярлык для bat
 
Некоторые batники было бы удобно запускать ярлыком, но к сожалению не всегда они срабатывают из-за того, что меняются пути при запуске ярлыка.
Т.е. запуская сам batник все работает, запуская его через ярлык - нет.

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

alpap 29-05-2019 13:27 2873518

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

YuS_2 29-05-2019 14:09 2873527

Цитата:

Цитата Sisin
Некоторые 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 2873529

Цитата:

Цитата YuS_2
И здесь попробую стелепатировать »

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

Цитата:

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

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

Код:

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

exit

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

YuS_2 29-05-2019 14:36 2873534

Цитата:

Цитата Sisin
не понял чем отличается »

Чтобы было понятно в чем отличие:
Код:

@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 2873541

Только если я делаю батник:
Код:

@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 2873543

Цитата:

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

Повторил алгоритм с батником из этого поста - всё срабатывает и пути показывает верные.
Тут моей телепатии уже не хватает, требуются подробности. :)
Он совсем не запускается или запускается и вылетает или что?

Sisin 29-05-2019 16:01 2873547

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


Время: 16:33.

Время: 16:33.
© OSzone.net 2001-