Батники запускаются в %USERPROFILE%
@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=
А setlocal не модно использовать?
Но vim отлично работает

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