2015-01-10 4 views
-2

Я хочу использовать эту CMD командуКак использовать команду CMD в C++?

ROBOCOPY D:\folder1 D:\folder2 /S /E 

с условиями, чтобы скопировать содержимое folder1 в folder2

if(i == 1) 

и,

if(i == 2) 

ROBOCOPY D:\folder3 D:\folder4 /S /E 

скопировать содержимое folder3 в Folder4

Что мне делать?

+0

система («Ваша команда»), WinExec или CreateProcess в порядке упрощения к лучшему. – tux3

+0

Зачем использовать Robocopy? Почему бы не скопировать каталоги с C++? – Biffen

+0

Вы избежали '\\', если вы жестко закодировали путь как строковый литерал? – drescherjm

ответ

1

«Что мне делать?»

Вы просто сделать это (используя std::system() функции):

#include <cstdlib> 

// ... 

if(i == 1) { 
    std::system("ROBOCOPY D:/folder1 D:/folder2 /S /E"); 
} 
else if(i == 2) { 
    std::system("ROBOCOPY D:/folder3 D:/folder4 /S /E"); 
} 

Обратите внимание, что для строковых литералов как "D:\folder3", вам нужно, чтобы избежать '\' персонажей, с другой '\' : "D:\\folder3".
Или еще два, в зависимости от интерпретационной командной оболочки (для работы с окнами без этого): "D:\\\\folder3".
Более простой способ состоит в том, чтобы использовать более простой для записи символ '/', который также используется для уточнения окон.

+0

Спасибо, вы ответили мне, но std :: system ("ROBOCOPY D:/folder1 D:/folder2/S/E"); вместо меня не работает, а std :: system («ROBOCOPY D: \\\\ folder1 D: \\\\ folder2/S/E»); работает. можете ли вы объяснить, что такое символы эвакуации и почему мы должны их использовать? –

+1

http://en.wikipedia.org/wiki/Escape_sequences_in_C – drescherjm

1

Самый простой способ для вызова стандартной функции библиотеки system: http://www.cplusplus.com/reference/cstdlib/system/

Если вам нужно больше гибкости, http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspxCreateProcess является вещь, чтобы идти - аргумент STARTUPINFO позволяет делать такие вещи, как передать его пользовательский ввод и захват его выход тоже.

+0

Показать небольшие встроенные образцы, пожалуйста, вместо того, чтобы просто предоставлять ссылки. Это славно улучшит ваш ответ. –

Смежные вопросы