Пакетный файл Windows: есть ли способ добавить «и»? - PullRequest
0 голосов
/ 07 апреля 2010

Краткая версия: есть ли способ написать «и» или «или» или «предложение» в пакетном файле?

Немного длиннее версия:

Я унаследовал проект Visual Studio, который создает DLL, а затем копирует эту DLL в другое место. В качестве шага после сборки VS запускает следующий скрипт.

if not '$(ConfigurationName)' == 'DebugNoSvc' goto end

xcopy /Y $(TargetDir)*.config $(ProjectDir)..\myService\bin\Debug
xcopy /Y $(TargetDir)*.config $(ProjectDir)..\myService\bin\DebugNoSvc

:end

Похоже, что есть проблема, когда проект скомпилирован как Debug, поскольку он не делает копию (я предполагаю, что в какой-то момент средний раздел был обновлен, но предложение if этого не сделало) 1008 *

Есть ли простой способ сделать сложную логическую логику в предложениях if в пакете?

Ответы [ 4 ]

2 голосов
/ 07 апреля 2010
if not '$(ConfigurationName)' == 'Debug' goto test2

xcopy /Y $(TargetDir)*.config $(ProjectDir)..\myService\bin\Debug
goto end

:test2
if not '$(ConfigurationName)' == 'DebugNoSvc' goto end

xcopy /Y $(TargetDir)*.config $(ProjectDir)..\myService\bin\DebugNoSvc

:end
1 голос
/ 07 апреля 2010

При стандартной пакетной обработке DOS, я думаю, вам нужен один из нескольких операторов if, который уже опубликован.Другая возможность - использовать что-то вроде командный процессор JP Software Take Command.У них есть бесплатная версия.Это значительное улучшение по сравнению с обычной оболочкой DOS и обладает множеством очень интересных функций, включая возможность использовать .and. и .or. в выражении if.

0 голосов
/ 07 апреля 2010

Чтобы ответить на ваш первый вопрос напрямую: Да, в пакетных файлах Windows есть «и» (оболочка / k / a NT), которая позволяет вам выполнять несколько действий в одной строке: амперсанд &. Также есть опция «группировки», которая позволяет вам рассматривать набор строк как одну сущность: круглые скобки ( ... ).

echo Hello, world & if "%windir%"=="C:\WINDOWS" (
echo from Windoze
)

Не уверен, как это поможет в вашей ситуации, хотя ... Я подозреваю, что предложение Бески о if '$(ConfigurationName)' == 'Debug' ... может помочь, хотя.

0 голосов
/ 07 апреля 2010

Я начинаю думать, что подобное может быть лучшим решением, но я действительно не уверен:

if '$(ConfigurationName)' == 'DebugNoSvc' goto copyDebugNoSvc
if '$(ConfigurationName)' == 'Debug' goto copyDebug
goto end

:copyDebugNoSvc
xcopy /Y $(TargetDir)*.config $(ProjectDir)..\hsspringhost\bin\DebugNoSvc
goto end

:copyDebug
xcopy /Y $(TargetDir)*.config $(ProjectDir)..\hsspringhost\bin\Debug
goto end

:end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...