VS2015上のC++でコーディングしています。
起動したいbatファイルまでの絶対パスに日本語名が含まれている時に、
system()又は_wsystem()で起動しようとするとstringの変数又はstringの変数を
wstringに変換して渡しているのですが、文字化けしてしまっていてうまく起動できません。

#include <windows.h>
#include <tchar.h>
#include <iostream>
#include <algorithm>
#include <filesystem> 
#include <Windows.h>
#include <string>
#include <codecvt> 
#include <cstdio>
#define BatName "Do.bat"
using namespace std;

wstring _bacePath;
void convert_DobatPath( wstring filePath ){
    string fullPath;
    wstring wFullPath;
    //batパス作成
    fullPath = "\\";
    fullPath += BatName;
    //string→wstring変換
    wchar_t *wcs = new wchar_t[fullPath.length() + 1];
    mbstowcs( wcs, fullPath.c_str(), fullPath.length() + 1 );
    wFullPath = wcs;
    delete[] wcs;
    //フルパス作成
    wFullPath = _bacePath + filePath + wFullPath;
    // 起動
    _wsystem( wFullPath.c_str() );
}

int main(){
    namespace sys = std::tr2::sys;
    string startFolder;
    cin >> startFolder;
    wchar_t *wcs = new wchar_t[startFolder.length() + 1];
    mbstowcs( wcs, startFolder.c_str(), startFolder.length() + 1 );
    _bacePath = wcs;
    sys::path p( startFolder.c_str() );
    std::for_each( sys::recursive_directory_iterator( p ),     sys::recursive_directory_iterator(),
        []( const sys::path& p ) {
        // 特定ファイル見つかったら
        // そこまでのパスを取得し、bat起動に投げる
        if( sys::is_regular_file( p ) ) {
            if( p.filename() == "hoge.txt" ){
                sys::path& parentPath = p.parent_path();
                convert_DobatPath( parentPath.generic_wstring() );
            }
        }
    } );
}

wstringに変換せずsystem()で呼んでも文字化けしてしまい、同じ結果でした。
wstringで統一しようとしましたが"\"とBatNameを合わせることが出来ませんでした。
C++でbatファイルを起動できないでしょうか。よろしくお願いいたします。