0

バッチファイルを使用してファイルを移動したいので、以下のコードを使用しますが、プロセスは正常に実行されたようですが、ファイルは転送されません。このコードに何か問題がありますか?

    STARTUPINFO osi;
    PROCESS_INFORMATION pi;
    ZeroMemory( &osi, sizeof(osi) );
    osi.cb = sizeof(capinfo);
    ZeroMemory( &pi, sizeof(pi) );

    wchar_t cmd[8192];
    wchar_t ocmd[8192];
    char ocmd1[8192];
    swprintf_s(ocmd,sizeof(ocmd),L"%s\\%s.bat",capodd->templocation,capodd->wcurrentoutput);
    sprintf_s(ocmd1,sizeof(ocmd1),"%ls\\%s.bat",capodd->templocation,capodd->currentoutput);
    FILE * tempbat = fopen(ocmd1,"w");

    swprintf_s(cmd,8192,L"move %s\\%s.mp4 %s\\%s.mp4",capodd->templocation,capodd->wcurrentoutput,capodd->destination,capodd->wcurrentoutput);
    fprintf(tempbat,"%ls\n",cmd);
    //swprintf_s(cmd,8192,L"move %s\\%s.txt %s\\%s.txt",capodd->templocation,capodd->currentoutput,capodd->destination,capodd->currentoutput);
    //fprintf(tempbat,"%ls\n",cmd);
    //fprintf(tempbat,"del %ls\n",ocmd);
    fclose(tempbat);
    swprintf_s(cmd,sizeof(cmd),L"cmd /c %s",ocmd);
    // just for fun, sleep for twice my latency to make sure the other half of the graph has started
    Sleep(1000 *2); // of course, this means our overlap better be within 2x of the periodicity

    if (!CreateProcess(NULL,cmd,NULL,NULL,FALSE,0,NULL,NULL,&osi,&pi)) {
        fprintf(capodd->c_pF,"couldn't execute copy %d\n",GetLastError());
    }
4

1 に答える 1

1

コードには 2 つの問題があります
。1-osi.cb = sizeof(capinfo);に変更する必要がありますosi.cb = sizeof(osi);
。2- sizeof()in の使用swprintf_sは正しくありません。代わりに使用するか、静的配列を使用する場合_countof()は省略できます。 このコードをテストしましたが、他に問題はありませんでした。sizeof()

于 2012-06-18T18:36:54.067 に答える