2012-12-26 4 views
2

I мой пакетный файл я хочу, чтобы проверить, если путь к следующей папке устанавливаетсяпакетного файла -Как проверить, если путь к папке бин установлен

C:\Program Files(x86)\Windows Installer XML v3.5\bin 

в любой переменной или в системной переменной или определяемая пользователем переменная

Мне нужно использовать содержимое папки bin; что, если пользователь не установил путь цитируемый выше, но сделал что-то вроде

C:\WindowsinstallerXML\bin 

или D: \ WindowsInstaller \ Bin

ответ

0

Вы можете использовать:

PATH="C:\Program Files(x86)\Windows Installer XML v3.5\bin";%PATH% 

В принципе, вместо того, проверить, установлен ли он, почему бы не указать явно в вашем скрипте?

+0

Предположим, я беру этот пакетный файл на другой компьютер и на этом компьютере путь к бункером выглядит, как указано выше, то – user1926152

+0

как D: \ wixinstalldir \ Bin тогда – user1926152

+0

Таким образом, в основном, что путь может быть что угодно. Я предлагаю вместо выполнения обратного просмотра переменной среды вы принимаете этот путь как аргумент командной строки. Позвольте пользователю вашего сценария решить, какой путь указать. – Icarus3

0
@echo off 
set input=%1 
IF DEFINED input (ECHO you entered %input%) ELSE (ECHO usage: script bin_file_path) 
0

Если вы знаете имя одного из бинарных файлов, то вы можете использовать для переменной ~PATH: модификатора, чтобы проверить, если путь к этому двоичному в настоящее время в вашем PATH. И это даст вам реальный путь :)

for %F in (someFile.exe) do @if "%~$path:F" neq "" echo %~$path:F 

Если вы хотите использовать код в пакетном файле, то каждый % должен быть в два раза, как %%.

2

Если вы хотите проверить каждую определенную переменную для строки, это будет именно так. Если вы хотите специально проверить переменную пути, заменив set на echo %path%, это тоже сработает.

set | find "C:\Program Files(x86)\Windows Installer XML v3.5\bin" > NUL 2>&1 || goto badinstall 

Если вы хотите, чтобы проверить директорию установки, я предлагаю проверить, чтобы узнать, есть ли значение реестра для него, если есть вы можете вытащить его, как это.

for /f "tokens=3 delims= " %%a in ('reg query \HKCU\path\to\subkey\here /v "keyhere" ^| findstr /C:"keyhere"') do set wixmlpath=%%a 
Смежные вопросы