Что нового

[Файловая система] перемещение папок с подпапками и файлами

graf1024

Новичок
Сообщения
2
Репутация
0
буквально несколько часов знаком с AutoIt и, может я чего-то не допонимаю, но все-таки:
ни
Код:
$err=FileMove("f:\1", "f:\",8)

ни
Код:
$err=DirMove("f:\1", "f:\",1)

диск F: взят для примера
не перемещают подпапки, хотя в описании функций заявлено, что должны перемещать вместе со структурой папок.
Суть задачи такова: после флешечных вирусов файлы пользователей оказываются в скрытой папке и поднимается визг "мои файлы пропали". Хочу собрать standalone exe для устранения последствий этих вирусов. Все остальное написано, а вот с перемещением файлов и папок в корень флешки - загвоздка.
Неужели есть лишь единственный выход - рекурсивный обход всех папок?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
graf1024
Попробуй так:
Код:
ExpandToRootDir('C:\downloads','C:\')

Func ExpandToRootDir($src,$dst)
	Local $search = FileFindFirstFile($src&'\*.*')

	If $search = -1 Then
		ConsoleWrite(">No files/directories matched the search pattern")
		Exit
	EndIf

	While 1
		Local $file = FileFindNextFile($search)
		If @error = 1 Then ExitLoop

		If @extended = 1 Then
			DirMove($src&'\'&$file,$dst&'\'&$file,1)
		Else
			FileMove($src&'\'&$file,$dst&'\'&$file,1)
		EndIf
	WEnd

	FileClose($search)
EndFunc
 

Astel064

Помог мой пост, ставь +!
Сообщения
276
Репутация
51
Вам нужно снять скрытый+системный атрибуты с файлов и папок???
Если да, то вот пример:
Код:
Local $sDir = "F:\*"
Local $iKey = RunWait ('cmd.exe /c ATTRIB -S -H "'&$sDir&'" /S /D', "", 0)
If $iKey <> 0 Then MsgBox(16," ","Ошибка. Код: "&$iKey)
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Astel064
для установки и снятия атрибутов в AutoIT есть свои функции. смотри справку
 
Верх