Подтвердить что ты не робот

Если не существует - команда CMD - не работает

В настоящее время я пишу командный файл, который выполняет установочный файл. Перед запуском файла установки я проверяю, существует ли каталог, чтобы избежать повторной установки приложения.

Я делаю это с помощью инструкции If Not Exists filename. Если установленный файл не существует, я затем запускаю установочный файл.

По какой-то причине, когда я тестирую его с приложением, в котором он уже установлен, он по-прежнему пытается переустановить приложение поверх него.

Вот фрагмент моего кода:

cd "C:\Documents and Settings\John\Start Menu\Programs\"
pause
If NOT exist "Software Folder"\ (
 start \\filer\repo\lab\"software"\"myapp"\setup.exe
 pause
) 

Где SoftwareFolder является подкаталогом "C:\Documents and Settings\John\Start Menu\Programs\"., я проверяю, существует ли он в моей папке Programs.

Я знаю, что ничего не случилось с моей командой start. Я чувствую, что что-то не так с моей начальной командой CD или ее параметрами.

Спасибо, много парней!

4b9b3361

Ответ 1

Используйте FULL путь к папке в коде If Not Exist. Тогда вам больше не придется записывать CD:

If Not Exist "C:\Documents and Settings\John\Start Menu\Programs\SoftWareFolder\"

Ответ 2

Я заметил некоторые проблемы с этим, которые могут быть полезны для кого-то, кто только начинает, или несколько неопытного пользователя, чтобы знать. Во-первых...

CD /D "C:\Documents and Settings\%username%\Start Menu\Programs\"

две вещи - это то, что a/D после компакт-диска может оказаться полезным для того, чтобы убедиться, что каталог изменен, но это не обязательно, во-вторых, если вы собираетесь передать это от пользователя к пользователю, которого вы должны добавить, вместо вашего имени, код% username%, это делает код пригодным для использования на любом компьютере, если у вас есть файл setup.exe в том же месте, что и на вашем компьютере. конечно, сделать это сложнее. также...

start \\filer\repo\lab\"software"\"myapp"\setup.exe

начальный код здесь можно настроить таким образом, но правильный синтаксис

start "\\filter\repo\lab\software\myapp\" setup.exe

Это будет работать: setup.exe, расположенный в:\filter\repo\lab... и т.д.\

Ответ 3

Как и в ответе Эскобара Цезера, я предлагаю использовать кавычки вокруг всего пути. Это обычный способ обернуть весь путь в "", а не только отдельные имена каталогов в пути.

У меня была аналогичная проблема, что для меня это не сработало. Но не было возможности использовать "в пути для отдельных имен каталогов, потому что в пути содержались переменные среды, которые сами покрывают более одной иерархии каталогов. Вывод состоял в том, что я пропустил пространство между закрытием" и (

Правильная версия с пробелом перед скобкой будет

If NOT exist "C:\Documents and Settings\John\Start Menu\Programs\Software Folder" (
 start "\\filer\repo\lab\software\myapp\setup.exe"
 pause
)