Что нового

функция копирования папки

mantest

Новичок
Сообщения
18
Репутация
0
Добрый день уважаемые форумчане!
Подскажите пожалуйста как скопировать всю выбранную папку полностью?
DirCopy - копирует не саму папку, а только содержимой папки, вместе с подпапками.
Код:
$folder1 = FileSelectFolder("Выберите папку", "")
DirCopy($folder1, "С:\Test", 1)
 

sngr

AutoIT Гуру
Сообщения
1,015
Репутация
411
Код:
$folder1 = FileSelectFolder("Выберите папку", "")
Run('xcopy /y /e "'&$folder1&'" "C:\test\"','',@SW_HIDE)
 

joiner

Модератор
Локальный модератор
Сообщения
3,570
Репутация
632
mantest
не работает, потому что имя диска набрано кирилицей ;D
я скопировал твой код и написал свой..точно такой же..твой не работает, а мой работает. с виду все одинаково..но...пока не сменил в твоем коде в написании буквы диска "С" с кирилицы на латиницу ничего не заработало...
вот такие пироги. вот так на латинице все работает. скопируй и запусти
Код:
$open = FileSelectFolder('','')
DirCopy($open,'C:\Test',1)
 
Автор
M

mantest

Новичок
Сообщения
18
Репутация
0
В папку "Test" копируется содержимое выбранной папки, а мне нужно чтобы копировалась сама выбранная папка со своим названием и содержанием.

Например я выбрал папку "мои документы" и вся папка "мои документы" скопировалась в C:\test\Мои документы.
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
mantest

Код:
#include <file.au3>
$folder1 = FileSelectFolder("Выберите папку", "")
Dim $szDrive, $szDir, $szFName, $szExt
$TestPath = _PathSplit($folder1, $szDrive, $szDir, $szFName, $szExt)
DirCopy($folder1, "C:\Test\" & $TestPath[3], 1)
 

joiner

Модератор
Локальный модератор
Сообщения
3,570
Репутация
632
можно и так
Код:
$open = FileSelectFolder('','')
 $1=_PathSplitByRegExp($open)
DirCopy($open,'C:\' & $1,1)
Func _PathSplitByRegExp($sPath)
    If $sPath = "" Or (StringInStr($sPath, "\") And StringInStr($sPath, "/")) Then Return SetError(1, 0, -1)
    Local $aRetArray[8], $pDelim = ""
    If StringRegExp($sPath, '^(?i)([A-Z]:|\\)(\\[^\\]+)+$') Then $pDelim = "\"
    If StringRegExp($sPath, '(?i)(^.*:/)(/[^/]+)+$') Then $pDelim = "//"
    If $pDelim = "" Then $pDelim = "/"
    If Not StringInStr($sPath, $pDelim) Then Return $sPath
    If $pDelim = "\" Then $pDelim &= "\"
    $aRetArray = StringRegExpReplace($sPath, '.*' & $pDelim & '|\.[^.]*$', '')
    Return $aRetArray
EndFunc

mantest [?]
mantest
ошибок не выдает. все работает
 
Автор
M

mantest

Новичок
Сообщения
18
Репутация
0
Почему тогда у меня выдает ошибку _PathSplit ?

Код:
$TestPath = _PathSplit ($folder1, $szDrive, $szDir, $szFName, $szExt)
$TestPath = ^ ERROR
 

joiner

Модератор
Локальный модератор
Сообщения
3,570
Репутация
632
mantest
полный текст ошибки какой? копируй из редактора скрипта.
если вначале скрипта нет
Код:
#include <file.au3>

то будет выдавать ошибку
 
Автор
M

mantest

Новичок
Сообщения
18
Репутация
0
Александр

Код:
>"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "D:\Nikolay\Autoit\Скрипты_Наброски\test.au3"
D:\Nikolay\Autoit\???????_????????\test\test.au3 (168) : ==> Unknown function name.:
$TestPath = _PathSplit($folder1, $szDrive, $szDir, $szFName, $szExt)
$TestPath = ^ ERROR
>Exit code: 1    Time: 8.454


Если вставляю "#include <file.au3>", то выдает такую ошибку:
Код:
>"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "D:\Nikolay\Autoit\Скрипты_Наброски\test.au3"
C:\Program Files\AutoIt3\Include\file.au3 (47) : ==> "Func" statement has no matching "EndFunc".:
Func _FileCountLines($sFilePath)

>Exit code: 1    Time: 0.207
 

joiner

Модератор
Локальный модератор
Сообщения
3,570
Репутация
632
так и получается, что ошибка не в предложенном варианте WSWR а в твоем скрипте..это видно из второй ошибки
покажи весь скрипт
 
Автор
M

mantest

Новичок
Сообщения
18
Репутация
0
Александр и WSWR

Ошибку нашел. Огромное Вам спасибо за помощь!
 
Верх