2015-01-19 1 views
0

я тусклый, чтобы скопировать файл в локальную сеть в C.
я ищу, но я не нашел версию для C
Копирование файлов в C с CMD команды «копией»

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; 
} 

Но это код не работает.
Может кто-нибудь сказать мне, что не так в этом коде?
Спасибо!

+0

Что не работает? Сбой программы? Вы получили сообщение об ошибке? Работает ли программа, но файл не копируется? – Evert

+0

Запустите программу, откройте новое окно cmd, но файл не был скопирован. – VladutZzZ

+1

Было бы проще использовать ['CopyFile'] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa363851 (v = vs.85) .aspx) или [' CopyFileEx'] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa363852 (v = vs.85) .aspx)? – WhozCraig

ответ

0

У вас есть неправильные escape-последовательности в пути назначения. Большинство сетевых ресурсов будут доступны, например, \\ share \ project \ foo \ data, но в вашей версии C \ есть escape-последовательность. Чтобы получить персонажа \, вам нужны два знака \\.

Итак:

\\ становится \

\\\\ становится \\

Поэтому:

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; 
} 
Смежные вопросы