2012-04-20 2 views
1

У меня есть пакетный файл (см. Код ниже). Поскольку команда tf должна быть выполнена в командной строке Visual Studio. Я вызываю команду visual studio.Выполнение командного файла + вызов Visual Studio Командная строка

Но тогда командный файл перестает выполняться. У кого-то есть идея?

 REM @echo off 
     REM ... Change the path below. This is the path where the code will be downloaded! 
     REM Z: 
     REM cd Backup_TFS_Preview 
     call %comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86 

     REM ... Navigate to folder 
     Z: 
     cd Backup_TFS_Preview 

     REM ... Makes folder with date today 
     mkdir %Date:~-10,2%-%Date:~-7,2%-%Date:~-4,4% 

     REM ... Navigate to folder 
     cd %Date:~-10,2%-%Date:~-7,2%-%Date:~-4,4% 

     REM ... Add workspace for the folder with date of today 
     tf workspace /new %Date:~-10,2%-%Date:~-7,2%-%Date:~-4,4% /noprompt 

     REM ... Get all items from TFS 
     tf get /recursive /all /noprompt 

     REM ... Navigate to folder 
     cd .. 

     REM ... Zip the folder 
     C:\TFS_Backup_Scripts\7z.exe a %Date:~-10,2%-%Date:~-7,2%-%Date:~-4,4%.zip %Date:~-10,2%-%Date:~-7,2%-%Date:~-4,4%\ 

     REM ... Remove folder 
     rmdir %Date:~-10,2%-%Date:~-7,2%-%Date:~-4,4%\ /s /q 

     REM ... Delete workspace 
     tf workspace /delete %Date:~-10,2%-%Date:~-7,2%-%Date:~-4,4% /noprompt 

     REM ... Navigate to folder 
     cd .. 
     cd .. 

     REM ... Delete zip files that are older then 10 days 
     forfiles -p "Z:\Backup_TFS_Preview" -s -m *.* -d -10 -c "cmd /c del /q @path" 
+1

В каком случае строка tf не работает? –

+0

Он останавливается после вызова ..... линии. – Sven

+0

@Sven iam пытается сделать то же самое на самом деле, автоматизируя его от Jenkins и получил сообщение об ошибке, что tf не является признанной командой. - Вы хотите поделиться своим рабочим решением с абсолютным путем, если у вас все еще есть это? спасибо – uniXVanXcel

ответ

0

я решил по-другому. Я использовал полный путь tf.exe. И он работает в командной строке.

Ответ на вызов doens't работал для меня.

0

Что происходит, когда вы выполняете вызов из командной строки?

также обратите внимание на код выхода (0 или 1) для vcvars32.bat (который вызывается vcvarsall.bat), поэтому выполните: Echo% errorlevel% после запуска vcvarsall.bat. если он равен нулю, команда успешно завершена.

и вы можете попытаться удалить DBL "" как это: вызов% COMSPEC%/к "C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat" x86 , которые могли бы нарушить ЦМД оператор на плохих pararameters из-за пространства не избежал

могут быть испытание для% Errorlevel% сразу после строки вызова

крайнего случая, изменить/к в/с в операторе вызова.

разместить результаты

4

% COMSPEC%/к работает другой командной строки, а затем сохраняет cmd.exe вокруг. Пока этот cmd.exe не вернется, ваш командный файл не будет продолжен.

Даже если вы замените/k на/c (который не поддерживает cmd.exe), он не будет работать, потому что переменные среды из новой командной строки в этом не сохраняются.

Вам просто нужно:

call %VS100COMNTOOLS%\vsvars32.bat 

Или

call %VS100COMNTOOLS%\..\..\VC\vcvarsall.bat x86 
+0

Не помогает. Он запускает весь скрипт, но не использует командную строку Visual Studio. Поскольку tf не распознается как внутренняя или внешняя команда. – Sven

Смежные вопросы