使用cmd命令 'copy'在C中复制文件

标签 c cmd copy

我想将文件复制到 C 中的本地网络。
我进行了搜索,但没有找到 C 版本

int _tmain(int argc, _TCHAR* argv[])
{

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

    if (!CreateProcess( L"C:\\Windows\\System32\\cmd.exe", L"C:\\Windows\\System32\\cmd.exe copy a.txt \\share\\4vlad\\b.txt", NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi) )
    {
        printf("Error %d",GetLastError());
    }
    _getch();
    return 0;
}

但是这段代码不起作用。
有人能告诉我这段代码有什么问题吗?
谢谢!

最佳答案

您的目标路径中有不正确的转义序列。大多数网络共享将像 \\share\project\foo\data 一样进行访问,但在您的 C 版本中 \ 是一个转义序列。要获取字符 \,您需要两个 \\ 标记。

所以:

\\ 变为 \

\\\\ 变为 \\

因此:

int _tmain(int argc, _TCHAR* argv[])
{

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

    if (!CreateProcess( L"C:\\Windows\\System32\\cmd.exe",
        L"C:\\Windows\\System32\\cmd.exe copy a.txt \\\\share\\4vlad\\b.txt",
        NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi) )
    {
        printf("Error %d",GetLastError());
    }
    _getch();
    return 0;
}

关于使用cmd命令 'copy'在C中复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28022191/

相关文章:

c 字符串基础知识,为什么未分配?

c - 分解shell脚本;引擎盖下会发生什么?

java - 像后台进程命令行一样从 Wildfly 运行standalone.bat?

c++ - 在 C++ 上搜索结构内部的对象

java - 将图像复制到新目录并重命名 - Java

c - 结合使用 fgets 和 strtok 将输入转换为标记

c - C 语言中 select() 的标准输入和标准输出

windows - 隐藏一个简单的批处理窗口

c++ - 何时删除复制构造函数和赋值运算符?

复制到 C 中动态分配的数组