1

バッチファイルがあります(以下のコードを参照)。Visual Studio コマンド プロンプトで tf コマンドを実行する必要があるためです。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"   
4

3 に答える 3

4

%comspec%/ kは、別のコマンドプロンプトを実行してから、cmd.exeを保持します。そのcmd.exeが返されるまで、バッチファイルは続行されません。

/kを/c(cmd.exeを保持しない)に置き換えても、新しいコマンドプロンプトの環境変数が保持されないため、機能しません。

必要なのは次のとおりです。

call %VS100COMNTOOLS%\vsvars32.bat

または

call %VS100COMNTOOLS%\..\..\VC\vcvarsall.bat x86
于 2012-04-20T19:22:14.107 に答える
0

コマンドプロンプトから呼び出しを実行するとどうなりますか?

vcvars32.bat (vcvarsall.bat によって呼び出される) の終了コード (0 または 1) にも注意してください。ゼロの場合、コマンドは正常に完了しました。

そして、次のように dbl "" を削除しようとする場合があります。スペースがエスケープされていないためのパラメーター

おそらく、呼び出し行の直後に %errorlevel% をテストします

最後の手段として、call ステートメントで /k を /c に変更してください。

結果を投稿する

于 2012-04-20T19:13:48.200 に答える
0

別の方法で解決しました。tf.exe のフル パスを使用しました。そして、コマンドプロンプトで動作します。

通話応答が機能しません。

于 2012-04-23T13:50:40.753 に答える