Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / poisk v papkax / 6 сообщений из 6, страница 1 из 1
13.09.2006, 09:16
    #33982875
Mihran
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
poisk v papkax
privet.u menya est papki s imenami 200601, 200602, ... ,200609 a vnix soderjutsya tablici odinakovomi imenami_ abonent,himnark, .... . Mne nujen iz etix papok soberat skajem abonent-i v odnom mesti i dat imya. Naprimer abonet kotori bil v papke s imem 200609 dat imya abonent200609.
...
Рейтинг: 0 / 0
13.09.2006, 10:12
    #33983051
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
poisk v papkax
Честно сказать, я не понял.
...
Рейтинг: 0 / 0
13.09.2006, 10:30
    #33983101
Samvel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
poisk v papkax
AleksMedЧестно сказать, я не понял.
я армянин и Mihran-у понял сразу.

к Миграну:
новое имя файла не трудно получить слиянием "старое имя"+"имя папки", а вот с папками придется поработать.
Тут один хороший участник предложил рекурсивную функцию перебора всех папок. Это выглядит примерно так:

Lpara tcFolder
Local Array laDir[1]
Local lnC, i
lnC = Adir(laDir, Addbs(tcFolder) + '*.*', 'D')
For i = 1 To lnC
If At('D', laDir[i, 5]) != 0 And !Inlist(laDir[i, 1], '.', '..')
Folders(Addbs(tcFolder) + laDir[i, 1])
Endif
Endfor
* здесь может быть та самая команда слияния имен
Return

остается вызвать функцию с параметром твоей корневой папки.

с уважением Самвел
...
Рейтинг: 0 / 0
13.09.2006, 10:54
    #33983186
Samvel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
poisk v papkax
Чуть не забыл.
Имя функции должна быть Folders.
...
Рейтинг: 0 / 0
14.09.2006, 10:19
    #33986159
Mihran
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
poisk v papkax
Spasibo Samvel. Ya nachinayushi i mne slojno ponyat, esli tebe ne trudno tyi obesni kak to chto tyi napisal.
Ya etu zadachu reshil tak`

a=CAST((SUBSTR("200501",1,4)) as N )
b=CAST(SUBSTR("200608",1,4) as N)
aa=CAST(SUBSTR("200501",5,2) as N )
bb=CAST(SUBSTR("200608",5,2) as N )
bbb=12
FOR i=a TO b

IF i=b then
bbb=bb
endif

FOR j=aa TO bbb
IF j<12 then
IF j<10 then
COPY FILE "D:\GasGUMRI_15\"+ALLTRIM(STR(i))+"0"+ALLTRIM(str(j))+"\abonent.dbf" ;
TO "D:\PoxProject\himnark\abonent"+ALLTRIM(STR(i))+"0"+ALLTRIM(str(j))+".dbf"
ELSE
COPY FILE "D:\GasGUMRI_15\"+ALLTRIM(STR(i))+ALLTRIM(str(j))+"\abonent.dbf" ;
TO "D:\PoxProject\himnark\abonent"+ALLTRIM(STR(i))+ALLTRIM(str(j))+".dbf"
endif
ELSE
COPY FILE "D:\GasGUMRI_15\"+ALLTRIM(STR(i))+ALLTRIM(str(j))+"\abonent.dbf" ;
TO "D:\PoxProject\himnark\abonent"+ALLTRIM(STR(i))+ALLTRIM(str(j))+".dbf"
aa=1

exit
ENDIF

NEXT

next
...
Рейтинг: 0 / 0
14.09.2006, 15:06
    #33987542
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
poisk v papkax
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
* Директория в которой находятся поддиректории
LOCAL lcMainDir
lcMainDir = "D:\GasGUMRI_15"

* Директория, куда будет копировать результат
LOCAL lcDirTarget
lcDirTarget = "D:\PoxProject\himnark"

* Получаем список просматриваемых директорий
* отбирая только те директории, которые состоят не более чем из  6  символов
LOCAL laDirSource( 1 ), lnDirCount
lnDirCount=ADIR(laDirSource,AddBS(m.lcMainDir)+"??????","D")

* Имя файла, который будем копировать
* Расширение обяательно!
LOCAL lcFileName
lcFileName = "abonent.dbf"

* Сканируем полученный список
LOCAL lnI, lcDirName, lcFileSource, lcFileTarget
FOR lnI =  1  TO lnDirCount
	* Очередная директория
	lcDirName = laDirSource[m.lnI, 1 ]

	* Проверям тот факт, что 
	* Имя директории длиной  6  символов,
	* состоит только из цифр, и, возможно, одного символа разделителя
	IF LEN(m.lcDirName)= 6  AND TYPE(m.lcDirName) = "N"

		* Формируем полный путь доступа к предполагаемому файлу, 
		* который нужно скопировать
		lcFileSource = AddBS(m.lcMainDir)+;
				AddBS(laDirSource[m.lnI, 1 ])+;
				m.lcFileName

		* Проверяем, существует ли такой файл
		IF FILE(m.lcFileSource) = .T.

			* Формируем новое имя
			lcFileTarget = AddBS(m.lcDirTarget)+;
					JustStem(m.lcFileName)+;
					laDirSource[m.lnI, 1 ]+;
					JustExt(m.lcFileName)

			* Собственно копирование
			COPY FILE (m.lcFileSource) TO (m.lcFileTarget)
		ENDIF
	ENDIF
ENDFOR
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / poisk v papkax / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]