Форум программистов, компьютерный форум CyberForum.ru

Как очистить папку от всех файлов - C++

Восстановить пароль Регистрация
 
EragonJKee
 Аватар для EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
16.02.2014, 19:07     Как очистить папку от всех файлов #1
Возник такой вопрос: как очистить папку от всех файлов, то бишь удалить все внутри папки, кроме самой папки?
Я поискал немного информации в Сети, нашел некоторые коды, но практически все они не поределялись (ибо я не знал, какие заголовки подключать, а тот же Интернет внятного ответа не дал). Один код прошел:

C++
1
2
3
system( "cd c:\windows" );
  system( "rmdir /s/q Temp" );
     system( "mkdir Temp" );
Ввел я вместо c:\windows свой адрес вида D:\Program Files\Catalog, вместо Temp - папку, которую я хочу "зачистить". Но программа мне выдала следующее сообщение:

Системе не удается найти указанный путь.
Подскажите, что можно сделать.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Stella
75 / 75 / 5
Регистрация: 26.02.2013
Сообщений: 224
16.02.2014, 19:18     Как очистить папку от всех файлов #2
EragonJKee, слеши нужно двойные:
C++
1
system( "cd c:\\windows" );
и подключить
C++
1
@include <windows.h>
EragonJKee
 Аватар для EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
16.02.2014, 21:53  [ТС]     Как очистить папку от всех файлов #3
Ничего не поменялось :c

Добавлено через 2 часа 29 минут
Может еще кто знает?
Stella
75 / 75 / 5
Регистрация: 26.02.2013
Сообщений: 224
16.02.2014, 22:20     Как очистить папку от всех файлов #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
EragonJKee, c командной строкой что-то дейсвительно сложно...
Все время следующая команда выполняется из каталога проекта, а не из того, в который перешли по cd.

Может так пойдет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdafx.h"
#include <Windows.h>
#include <shellapi.h>
#include <iostream>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    SHFILEOPSTRUCT FileOp;
 
    FileOp.hwnd = NULL;
    FileOp.wFunc = FO_DELETE;
    FileOp.pFrom = "d:\\test";
    FileOp.pTo = NULL;
    FileOp.fFlags = NULL; 
    FileOp.lpszProgressTitle = NULL;
 
    SHFileOperation(&FileOp);
    std::cout << GetLastError() << std::endl;
    return 0;
}
EragonJKee
 Аватар для EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
17.02.2014, 00:11  [ТС]     Как очистить папку от всех файлов #5
error C2440: =: невозможно преобразовать "const char [41]" в "LPCWSTR"
Stella
75 / 75 / 5
Регистрация: 26.02.2013
Сообщений: 224
17.02.2014, 00:59     Как очистить папку от всех файлов #6
EragonJKee,
C++
1
FileOp.pFrom = L"d:\\test";
EragonJKee
 Аватар для EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
17.02.2014, 14:47  [ТС]     Как очистить папку от всех файлов #7
Неа, теперь программа запускается, возвращает нулевое значение и, соответственно, ничего не удаляет.

Добавлено через 2 минуты
Понял, в чем смысл, нужно было везде ставить двойные слеши:

C++
1
FileOp.pFrom = L"d:\\program files\\folder\\folder\\folder";
Но программа запрашивает разрешение на удаление каталога, мне же нужно, чтобы папка осталась на месте, а все, что внутри без подтверждения ушло в небытие.

Добавлено через 6 минут
Так, как удалить внутренние файлы без папки (то есть, чтобы папка не удалялась, а только то, что внутри) я разобрался:

C++
1
FileOp.pFrom = L"d:\\program files\\folder\\folder\\folder\\*";
Но вот вопрос с ненадобностью подтверждения - остается.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
17.02.2014, 14:54     Как очистить папку от всех файлов #8
EragonJKee, судя по http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx можно установить флаг FOF_NOCONFIRMATION
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
17.02.2014, 15:00     Как очистить папку от всех файлов #9
не
Цитата Сообщение от EragonJKee Посмотреть сообщение
L"d:\\program files\\folder\\folder\\folder"
а
TEXT("d:\\program files\\folder\\folder\\folder")
вообще говоря
че, ЦЭ/виндовз то удалил?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2014, 21:06     Как очистить папку от всех файлов
Еще ссылки по теме:

C++ Как очистить ostringstream?
Программа, находящая папку по её полному "пути" и подсчитывающая количество файлов в ней C++
C++ Как очистить статический массив?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
EragonJKee
 Аватар для EragonJKee
9 / 10 / 1
Регистрация: 19.01.2014
Сообщений: 83
17.02.2014, 21:06  [ТС]     Как очистить папку от всех файлов #10
Цитата Сообщение от gray_fox Посмотреть сообщение
EragonJKee, судя по http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx можно установить флаг FOF_NOCONFIRMATION
Спасибо, то, что нужно

Цитата Сообщение от Kukurudza Посмотреть сообщение
TEXT("d:\\program files\\folder\\folder\\folder")
вообще говоря
че, ЦЭ/виндовз то удалил?
Не понял суть вопроса? И в чем, собственно разница?

Добавлено через 2 часа 47 минут
Update

Добавлено через 2 часа 57 минут
апдейт
Yandex
Объявления
17.02.2014, 21:06     Как очистить папку от всех файлов
Ответ Создать тему
Опции темы

Текущее время: 23:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru