gpt4 book ai didi

c++ - 从文件读取 diskpart 错误

转载 作者:行者123 更新时间:2023-11-28 08:02:46 24 4
gpt4 key购买 nike

我有以下代码,在 DskPrt1.txt assign letter= 的最后一行之前都可以正常工作。该文件按应有的方式写入。在下拉列表中,我选择一个驱动器盘符,将所选盘符发送到 FILE fp,将其写出,然后让 diskpart 读取它。这是输出

Volume 1 is the selected volume

the arguments specified for this command are not valid.

这告诉我它正在执行 DskPrt.txt 中第二行之前的所有操作。我已将 assign letter=X 手动复制并粘贴到 diskpart 中,它运行得很好。为什么它不适用于我的代码?

第 1 部分

SendMessage( 
(HWND) hWndDropMenu, // handle to destination window
CB_GETLBTEXT, // message to send
(WPARAM) wParam, // not used; must be zero
(LPARAM)tmpMsg // not used; must be zero
);

第 2 部分

FILE *fp;
fp = fopen("DskPrt1.txt", "wt");
char DskPrt11[] = "select volume 1";
char DskPrt12[] = "assign letter=";
fwrite (DskPrt11 , 1 , sizeof(DskPrt11) , fp ); //Line 1
fwrite("\n", sizeof(char), 1, fp); //New line
fwrite (DskPrt12 , 1 , sizeof(DskPrt12) , fp ); //Line 2
fwrite (tmpMsg , 1 , sizeof(tmpMsg) , fp ); //Letter
fclose(fp);

//Execute part 1 commands
std::wstring arrString[3] = {L"/C mkdir C:\\Users\\Andrew\\Desktop\\test",L"/C DISKPART /s C:\\Users\\Andrew\\Desktop\\DskPrt1.txt"};
LPWSTR cmd =L"C:\\Windows\\System32\\cmd.exe";
for(int i=0; i<2; i++)
{
STARTUPINFO info={sizeof(info)};
PROCESS_INFORMATION processInfo;
CreateProcessW(cmd, &arrString[i][0], NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, NULL, &info, &processInfo);
::WaitForSingleObject(processInfo.hProcess, INFINITE);
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
}

最佳答案

因为这个:

fwrite (DskPrt11 , 1 , sizeof(DskPrt11) , fp );

通过使用 sizeof(),您将包含终止空值。所以你的文件以至少两个你不想要的空字节结束。请改用 strlen()。

关于c++ - 从文件读取 diskpart 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10964638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com