Знаю что функцию DIR повторно использовать нельзя во вложенном цикле, Подскажите, а как тогда организовать поиск во вложенных под папках глубиной от 4х и более. Например:
У меня задача найти по определенному пути в папке и ее подпапках файлы с названием foto.jpf и скопировать их все в другое место под именем папки в которой он находится. Структура глубиной в 4-5 подпапок, когда нахажу первый файл, то Dir 3 ругается, так как я его уже использовал в DIR 4.
MyPath = "C:\Documents and Settings\111\"
MyName = Dir(MyPath, vbDirectory)
Do While MyName <> ""
If MyName <> "." And MyName <> ".." And (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
MyName2 = Dir(MyPath & MyName & "\", vbDirectory)
Do While MyName2 <> ""
If MyName2 <> "." And MyName2 <> ".." And (GetAttr(MyPath & MyName & "\" & MyName2) And vbDirectory) = vbDirectory Then
MyName3 = Dir(MyPath & MyName & "\" & MyName2 & "\", vbDirectory)
Do While MyName3 <> ""
If MyName3 <> "." And MyName3 <> ".." And (GetAttr(MyPath & MyName & "\" & MyName2 & "\" & MyName3) And vbDirectory) = vbDirectory Then
MyName4 = Dir(MyPath & MyName & "\" & MyName2 & "\" & MyName3 & "\", vbDirectory)
Do While MyName4 <> ""
If MyName4 <> "." And MyName4 <> ".." And (GetAttr(MyPath & MyName & "\" & MyName2 & "\" & MyName3 & "\" & MyName4) And vbDirectory) = vbDirectory Then
If CreateObject("Scripting.FileSystemObject").FileExists(MyPath & MyName & "\" & MyName2 & "\" & MyName3 & "\" & MyName4 & "\" & "foto.jpg") = True Then 'Åñëè ôàéë ôîòî åñòü, òî
FileCopy MyPath & MyName & "\" & MyName2 & "\" & MyName3 & "\" & MyName4 & "\" & "foto.jpg", "C:\Documents and Settings\Àëåêñåé\Ðàáî÷èé ñòîë\Êàòàëîã òîâàðà\Èçîáðàæ òîâàðîâ ïî èõ øòðèõ êîäó\" & MyName4 & ".jpg"
End If
End If
MyName4 = Dir
Loop
End If
MyName3 = Dir
Loop
End If
MyName2 = Dir
Loop
End If
MyName = Dir ' Get next entry.
Loop
Какая есть функция, аналогичная DIR, но в состоянии работать со вложенными папками? СПАСИБО!
У меня задача найти по определенному пути в папке и ее подпапках файлы с названием foto.jpf и скопировать их все в другое место под именем папки в которой он находится. Структура глубиной в 4-5 подпапок, когда нахажу первый файл, то Dir 3 ругается, так как я его уже использовал в DIR 4.
MyPath = "C:\Documents and Settings\111\"
MyName = Dir(MyPath, vbDirectory)
Do While MyName <> ""
If MyName <> "." And MyName <> ".." And (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
MyName2 = Dir(MyPath & MyName & "\", vbDirectory)
Do While MyName2 <> ""
If MyName2 <> "." And MyName2 <> ".." And (GetAttr(MyPath & MyName & "\" & MyName2) And vbDirectory) = vbDirectory Then
MyName3 = Dir(MyPath & MyName & "\" & MyName2 & "\", vbDirectory)
Do While MyName3 <> ""
If MyName3 <> "." And MyName3 <> ".." And (GetAttr(MyPath & MyName & "\" & MyName2 & "\" & MyName3) And vbDirectory) = vbDirectory Then
MyName4 = Dir(MyPath & MyName & "\" & MyName2 & "\" & MyName3 & "\", vbDirectory)
Do While MyName4 <> ""
If MyName4 <> "." And MyName4 <> ".." And (GetAttr(MyPath & MyName & "\" & MyName2 & "\" & MyName3 & "\" & MyName4) And vbDirectory) = vbDirectory Then
If CreateObject("Scripting.FileSystemObject").FileExists(MyPath & MyName & "\" & MyName2 & "\" & MyName3 & "\" & MyName4 & "\" & "foto.jpg") = True Then 'Åñëè ôàéë ôîòî åñòü, òî
FileCopy MyPath & MyName & "\" & MyName2 & "\" & MyName3 & "\" & MyName4 & "\" & "foto.jpg", "C:\Documents and Settings\Àëåêñåé\Ðàáî÷èé ñòîë\Êàòàëîã òîâàðà\Èçîáðàæ òîâàðîâ ïî èõ øòðèõ êîäó\" & MyName4 & ".jpg"
End If
End If
MyName4 = Dir
Loop
End If
MyName3 = Dir
Loop
End If
MyName2 = Dir
Loop
End If
MyName = Dir ' Get next entry.
Loop
Какая есть функция, аналогичная DIR, но в состоянии работать со вложенными папками? СПАСИБО!