Ответ 1
Используйте FULL путь к папке в коде If Not Exist. Тогда вам больше не придется записывать CD:
If Not Exist "C:\Documents and Settings\John\Start Menu\Programs\SoftWareFolder\"
В настоящее время я пишу командный файл, который выполняет установочный файл. Перед запуском файла установки я проверяю, существует ли каталог, чтобы избежать повторной установки приложения.
Я делаю это с помощью инструкции 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
или ее параметрами.
Спасибо, много парней!
Используйте FULL путь к папке в коде If Not Exist. Тогда вам больше не придется записывать CD:
If Not Exist "C:\Documents and Settings\John\Start Menu\Programs\SoftWareFolder\"
Я заметил некоторые проблемы с этим, которые могут быть полезны для кого-то, кто только начинает, или несколько неопытного пользователя, чтобы знать. Во-первых...
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... и т.д.\
Как и в ответе Эскобара Цезера, я предлагаю использовать кавычки вокруг всего пути. Это обычный способ обернуть весь путь в "", а не только отдельные имена каталогов в пути.
У меня была аналогичная проблема, что для меня это не сработало. Но не было возможности использовать "в пути для отдельных имен каталогов, потому что в пути содержались переменные среды, которые сами покрывают более одной иерархии каталогов. Вывод состоял в том, что я пропустил пространство между закрытием" и (
Правильная версия с пробелом перед скобкой будет
If NOT exist "C:\Documents and Settings\John\Start Menu\Programs\Software Folder" (
start "\\filer\repo\lab\software\myapp\setup.exe"
pause
)