Автор | Сообщение |
|
| постоянный участник
|
Пост N: 1650
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.02.11 04:12. Заголовок: Перенос папок ?
Всем привет. Подскажите как можно определенную ПАПКУ перенести на другой диск ? Т.е. имеем ПАПКУ начального уровня, а сколько там еще папок и файлов не известно ! И как эту папку со всем содержимым перенести на другой диск ? Файлы легко переносятся, а вот с папками затык получается.... Может у кого есть готовое решение ?
|
|
|
Ответов - 71
, стр:
1
2
3
4
All
[только новые]
|
|
|
| |
Пост N: 574
Зарегистрирован: 11.06.10
|
|
Отправлено: 04.09.12 12:38. Заголовок: Andrey пишет: А про..
Andrey пишет: цитата: | А проект сразу собрался ? Или правил мой test_dir55.hbp ? |
| запускал сначала твой exe, потом собирал ничего не меняя в hbp, все нормально. А вот с папкой для пробы не работатет!
|
|
|
|
| постоянный участник
|
Пост N: 2322
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.09.12 12:48. Заголовок: AlexMyr пишет: запу..
AlexMyr пишет: цитата: | запускал сначала твой exe, потом собирал ничего не меняя в hbp, все нормально. |
| Значит я прогу правильно собрал, а то уж тупить начал... Ура, получилось собирать на Harbour'e !!! AlexMyr пишет: цитата: | А вот с папкой для пробы не работатет! |
| Да видать не все работает ... Значит не я туплю ! Интересно, а что там в папочке такого, что Харбор ломается ?
|
|
|
|
| |
Пост N: 575
Зарегистрирован: 11.06.10
|
|
Отправлено: 04.09.12 12:53. Заголовок: // Определяю спис..
// Определяю список подкаталогов и файлов корневого каталога aDirFiles := MyDirectoryRecurse( cSource, cMaskaFileCopy, { } ) возвращает пустой масив, нужно ковырять MyDirectoryRecurse, что-то не так!
|
|
|
|
| |
Пост N: 576
Зарегистрирован: 11.06.10
|
|
Отправлено: 04.09.12 12:55. Заголовок: похоже ф-я не правил..
похоже ф-я не правильно обрабатывает файлы без расширений, вот, если все файлы с расширениями, то все нормально!
|
|
|
|
| постоянный участник
|
Пост N: 2323
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.09.12 13:10. Заголовок: AlexMyr пишет: нужн..
Резуме: Пример ПРАВИЛЬНО работает на Harbour 3.x и xHarbour v.9437 Bcc 551, при условии что файлы в папке удаления ТОЛЬКО с расширениями ! В остальных компиляторах не работает пример. Ура победили совместными усилиями !!! Всем БОЛЬШОЕ СПАСИБО за помощь ! AlexMyr пишет: цитата: | нужно ковырять MyDirectoryRecurse, |
| Брал из МиниГуи - пример SAMPLES\BASIC\DirectoryRecurse Проверил пример - ничего не показывает ! Тогда наверно с этой ошибкой к Филатову ! Или самим исправить можно ?
|
|
|
|
| |
Пост N: 98
Зарегистрирован: 16.12.08
|
|
Отправлено: 04.09.12 13:27. Заголовок: Andrey пишет: А что..
Andrey пишет: цитата: | А что за файл - xhb_copy_file.xpj ? Каким редактором пользуешься ? |
| Я использую xEdit от Xailer http://www.xailer.com/.
|
|
|
|
| |
Пост N: 578
Зарегистрирован: 11.06.10
|
|
Отправлено: 04.09.12 17:17. Заголовок: Написал с нуля перен..
Написал с нуля перенос папок, пробуй. Будут вопросы - задавай #include "directry.ch" STATIC cPathG := "" FUNC main( cSource ) LOCAL ad1 := {} IF cSource == Nil Alert( "Put the source path" ) ELSE IF hb_DirExists( cSource ) scan_dir( cSource, "*.*", @ad1, .F. ) IF MyMove( "c:\BackUp1", ad1 ) == 0 scan_dir( cSource, "*.*", ad1, .T. ) ENDIF ELSE Alert( cSource + " don't exist" ) ENDIF ENDIF RETURN nil FUNC scan_dir( cPath, cFMask, arr, lDele ) LOCAL x := 0, nResDel LOCAL aDir LOCAL cSavePath := cPathG cPathG += cPath + "\" aDir := Directory( AllTrim( cPathG ) + AllTrim( cFMask ), "D" ) AAdd( arr, { cPathG, aDir } ) FOR x := 1 TO Len( aDir ) IF aDir[x,F_ATTR] == "D" .AND. ! AllTrim( aDir[x,F_NAME] ) $ ". .." scan_dir( aDir[x,F_NAME], "*.*", @arr, lDele ) ELSEIF aDir[x,F_ATTR] != "D" .AND. lDele OutStd( hb_eol() ) OutStd( "DELETE FILE " + cPathG + aDir[x,F_NAME] ) FErase( cPathG + aDir[x,F_NAME] ) nResDel := FError() OutStd( " ..." + iif( nResDel == 0," OK",Str(nResDel ) ) ) ENDIF NEXT IF lDele OutStd( hb_eol() ) OutStd( "DELETE DIR " + cPathG ) hb_DirDelete( cPathG ) nResDel := FError() OutStd( " ..." + iif( nResDel == 0," OK",Str(nResDel ) ) ) ENDIF cPathG := cSavePath RETURN nil PROC MyMove( cTarget, arr ) LOCAL x, y, nRes IF ! hb_DirExists( cTarget ) hb_DirCreate( cTarget ) ENDIF for EACH x in arr hb_DirCreate( cTarget + "\" + x[1] ) IF ValType( x[2] ) == "A" .AND. ! Empty( x[2] ) for EACH y in x[2] IF ! y[1] $ ". .." OutStd( hb_eol() ) OutStd( "COPY FILE " + x[1] + y[1] + " TO " + ctarget + "\" + x[1] + y[1] ) __CopyFile( ( x[1] + y[1] ), ( ctarget + "\" + x[1] + y[1] ) ) nres := FError() OutStd( " ..." + iif( nRes == 0," OK",Str(nRes ) ) ) ENDIF next ENDIF next RETURN nRes
|
|
|
|
| постоянный участник
|
Пост N: 2329
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.09.12 14:59. Заголовок: AlexMyr пишет: Напи..
AlexMyr пишет: цитата: | Написал с нуля перенос папок, пробуй. |
| Ну молодец ! Буду пробовать...
|
|
|
|
| |
Пост N: 580
Зарегистрирован: 11.06.10
|
|
Отправлено: 05.09.12 23:13. Заголовок: Немного подправил и ..
Немного подправил и добавил. Теперь на входе два параметра 1-й исходная папка, 2-й опция -move, если указана - делаем перенос, если нет - просто копируем. Папку можно задавать и с указанием полного пути к ней! Копирование с выводом лога в файл aa.log prog1 PRIKOL >aa.log то же, но с указанием полного пути prog1 c:\path1\PRIKOL >aa.log Перенос с выводом лога в файл aa.log prog1 PRIKOL -move >aa.log то же, но с указанием полного пути prog1 c:\path1\PRIKOL -move >aa.log #include "directry.ch" #include "hbextcdp.ch" STATIC cPathG := "" FUNC main( cSource, lMove ) LOCAL ad1 := {} LOCAL cHostCP := "UA1251" LOCAL cTermCP := "UA1251" LOCAL lBoxChar := .T. hb_cdpSelect( cHostCP ) hb_SetTermCP( cTermCP, cHostCP, lBoxChar ) IF cSource == Nil Alert( "Put the source path" ) ELSE IF hb_DirExists( cSource ) scan_dir( cSource, "*.*", @ad1, .F. ) IF MyMove( "c:\BackUp1", ad1 ) == 0 IF lMove != NIL .AND. Lower( AllTrim( lMove ) ) == "-move" scan_dir( cSource, "*.*", ad1, .T. ) ENDIF ENDIF ELSE Alert( cSource + " don't exist" ) ENDIF ENDIF RETURN nil FUNC scan_dir( cPath, cFMask, arr, lDele ) LOCAL x := 0, nResDel LOCAL aDir LOCAL cSavePath := cPathG cPathG += cPath + "\" aDir := Directory( AllTrim( cPathG ) + AllTrim( cFMask ), "D" ) AAdd( arr, { cPathG, aDir } ) FOR EACH x in aDir IF x[F_ATTR] == "D" .AND. ! AllTrim( x[F_NAME] ) $ ". .." scan_dir( x[F_NAME], "*.*", @arr, lDele ) ELSEIF x[F_ATTR] != "D" .AND. lDele OutStd( hb_eol() ) OutStd( "DELETE FILE " + cPathG + x[F_NAME] ) FErase( cPathG + x[F_NAME] ) nResDel := FError() OutStd( " ..." + iif( nResDel == 0," OK",Str(nResDel ) ) ) ENDIF NEXT IF lDele OutStd( hb_eol() ) OutStd( "DELETE DIR " + cPathG ) hb_DirDelete( cPathG ) nResDel := FError() OutStd( " ..." + iif( nResDel == 0," OK",Str(nResDel ) ) ) ENDIF cPathG := cSavePath RETURN nil PROC MyMove( cTarget, arr ) LOCAL x, y, nRes, cPathwoDisk := "", cDirItem, cPathLong := "" IF ! hb_DirExists( cTarget ) hb_DirCreate( cTarget ) ENDIF for EACH x in arr IF ":" $ x[1] cPathwoDisk := SubStr( x[1], hb_At( ":\",x[1] ) + 2 ) ELSE cPathwoDisk := x[1] ENDIF cPathLong := cTarget FOR EACH cDirItem IN hb_ATokens( cPathwoDisk, hb_ps() ) IF !Empty( cDirItem ) cPathLong += hb_ps() + cDirItem if ! hb_DirExists(cPathLong) hb_DirCreate( cPathLong ) endif ENDIF next IF ValType( x[2] ) == "A" .AND. ! Empty( x[2] ) for EACH y in x[2] IF ! y[1] $ ". .." OutStd( hb_eol() ) OutStd( "COPY FILE " + x[1] + y[1] + " TO " + ctarget + "\" + cPathwoDisk + y[1] ) __CopyFile( ( x[1] + y[1] ), ( ctarget + "\" + cPathwoDisk + y[1] ) ) nres := FError() OutStd( " ..." + iif( nRes == 0," OK",Str(nRes ) ) ) ENDIF next ENDIF next RETURN nRes
|
|
|
|
| постоянный участник
|
Пост N: 2330
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.09.12 14:15. Заголовок: AlexMyr пишет: Немн..
AlexMyr пишет: цитата: | Немного подправил и добавил. |
| Спасибо большое за пример ! Попробую его на хХарбор переделать... Я пока на нем сижу. Дай пожалуйста свой е-майл, хочу прогу выслать... Или мне на почту напиши 30195 СОБАКА mail.ru
|
|
|
|
| |
Пост N: 581
Зарегистрирован: 11.06.10
|
|
Отправлено: 06.09.12 16:06. Заголовок: e-mail в профиле ук..
e-mail в профиле указан. А что за прога?
|
|
|
Ответов - 71
, стр:
1
2
3
4
All
[только новые]
|
|