Как исправить этот BATCH-файл так, чтобы при его запуске правильно найти все пути? - PullRequest
0 голосов
/ 01 января 2012

Я написал этот скрипт, чтобы сначала установить MSI, а затем скопировать мое приложение во временный каталог. Но никто не работает. Когда исполняется файл windows.bat, он не может найти package\, а также каталог dist

1) Пользователь скачал и запустил файл windows.bat со следующим деревом:

C:\Users\Username\Downloads\windows.bat
C:\Users\Username\Downloads\package\<.msi files>
C:\Users\Username\Downloads\dist\<application files>

2) windows.bat содержит ниже:

msiexec /I "package\files.msi" /qb
set temp=%TEMP%
echo %temp%
xcopy dist %temp% /e /h /R

Все не удается запустить с файлом windows.bat. Что я делаю не так?

Ответы [ 3 ]

1 голос
/ 01 января 2012

Хорошо, думаю, я знаю, что не так. msiexec.exe запускается из системной папки Windows (например, C: \ Windows \ Systeme32), поэтому при передаче имени файла MSI для установки необходимо указать полный путь к нему.

Итак, используя информацию @MikeNakis о получении текущего пути в пакетном файле, попробуйте это (небольшая подстройка, чтобы использовать% ~ dp0 только для каталога, поэтому также не включая имя пакетного файла):

msiexec /I "%~dp0\package\files.msi" /qb
1 голос
/ 01 января 2012

Убедитесь, что вы находитесь в правильном каталоге, чтобы начать с

CD /d c:\users\%USERNAME%\downloads

В качестве первой строки в вашем командном файле

1 голос
/ 01 января 2012

Вам необходимо добавить следующую строку в начало вашего пакетного файла:

cd c:\users\username\downloads

или вы можете сделать это:

cd /d %~p0

% ~ p0 примет аргумент #0 (полный путь к пакетному файлу) и извлеките из него путь.Параметр / d также обязательно изменит текущий диск, если указанный путь содержит спецификацию диска.

...