Батники запускаются в %USERPROFILE%

juliuzz

Пишу батник, получающий в качестве параметра файл. Тулзы, которыми файл обрабатывается естественно лежат в той же папке, что и батник. Если его вызывать из коммандной строки ручками - всё зашибись, а если drag'n'drop-нуть на него файл, то он выполняется в %USERPROFILE% и не находит прог. Как можно узнать в батнике из какой папки он был запущен, чтобы сделать туда cd?

vbgt99912

Может поможет пример готового решения
 @echo off
rem -- Run Vim --

set VIM_EXE_DIR=C:\Program Files\Vim\vim70
if exist "%VIM%\vim70\vim.exe" set VIM_EXE_DIR=%VIM%\vim70
if exist "%VIMRUNTIME%\vim.exe" set VIM_EXE_DIR=%VIMRUNTIME%

if exist "%VIM_EXE_DIR%\vim.exe" goto havevim
echo "%VIM_EXE_DIR%\vim.exe" not found
goto eof

:havevim
rem collect the arguments in VIMARGS for Win95
set VIMARGS=
:loopstart
if .%1==. goto loopend
set VIMARGS=%VIMARGS% %1
shift
goto loopstart
:loopend

if .%OS%==.Windows_NT goto ntaction

"%VIM_EXE_DIR%\vim.exe" %VIMARGS%
goto eof

:ntaction
rem for WinNT we can use %*
"%VIM_EXE_DIR%\vim.exe" %*
goto eof


:eof
set VIMARGS=

Andbar

А setlocal не модно использовать?

vbgt99912

Я честно совсем ничего не пониаю в .bat
Но vim отлично работает
Оставить комментарий
Имя или ник:
Комментарий: