Вот обходной путь. Сохраните его как «SetMyPath.bat» (или с другим именем):
@echo off
set dir=%*
setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir /s /ad /o:d /b "%dir:"=%"') do set path=%%i;!path!
cmd
(Здесь "%dir:"=%"
требуется только для того, чтобы вы могли опускать кавычки вокруг каталогов с пробелами в именах при вызове этого файла. Если вам это не нужно, то вместо этого подойдет %1
.)
Этот файл принимает один аргумент командной строки: каталог. Он запустит новую копию cmd.exe
, где будут доступны файлы в указанном каталоге:
C:\> mysqldump.exe
File not found.
C:\> SetMyPath.bat C:\Program Files\MySQL
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\> mysqldump.exe
Usage: mysqldump [OPTIONS] database [tables]
C:\> exit
В этом примере первая команда показывает, что mysqldump.exe
не находится на пути. После выполнения командного файла запускается новый cmd.exe
, где доступен mysqldump.exe
. Когда вы закончите работу с ним, exit
вернет вас к исходной копии cmd.exe
.
Если в разных подкаталогах есть две копии файла .exe
, будет запущена копия в самом последнем обновленном каталоге (из-за /o:d
). В этом примере, предполагая, что каталог самой последней версии MySQL обновлялся последним, будет запущена самая последняя версия mysqldump.exe
.
Пакетный файл можно изменить, чтобы гарантировать запуск самой последней копии .exe
(спросите меня в комментарии, если вам это нужно).