Перейти к содержимому

Фотография

Проверка наличия файла в каталоге


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 {Bastion}Bizon

{Bastion}Bizon

    Новый участник

  • Members
  • Pip
  • 40 сообщений
  • ФИО:Гавриков Станислав Влааадимирович

Отправлено 09 июня 2006 - 10:19

Задача следующая:
Надо убедиться в том, что в заданном каталоге есть заданный файл.
Вопрос:
Как это сделать?
Если зайти вкаталог не проблемма, то как узнать о его содержимом, мне неизвестно.
Подскажите, если кто знает.
  • 0

#2 Petr

Petr

    Опытный участник

  • Members
  • PipPipPipPip
  • 317 сообщений
  • ФИО:Можаев Петр
  • Город:Москва

Отправлено 09 июня 2006 - 10:26

Попробуйте команду Dir.
  • 0

#3 greyver

greyver

    Опытный участник

  • Members
  • PipPipPipPip
  • 358 сообщений
  • ФИО:Вербенко Сергей Анатольевич
  • Город:Москва, Зеленоград


Отправлено 09 июня 2006 - 11:26

Задача следующая:
Надо убедиться в том, что в заданном каталоге есть заданный файл.
Вопрос:
Как это сделать?

Проверить существует ли "заданный файл" по его полному пути.

Если зайти вкаталог не проблемма, то как узнать о его содержимом, мне неизвестно.

Просмотр сообщения

Вообще-то это уже другая задача.
Посмотрите этот код...
Как его переделать под свои нужды, думаю, сообразите.
Function ShowFileList(folderspec)
   Dim fso, f, f1, fc, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(folderspec)
   Set fc = f.Files
   For Each f1 in fc
      s = s & f1.name 
      s = s &   "<BR>"
   Next
   ShowFileList = s
End Function

Сообщение отредактировал greyver: 09 июня 2006 - 17:08

  • 0

#4 Owl

Owl

    Новый участник

  • Members
  • Pip
  • 44 сообщений


Отправлено 09 июня 2006 - 11:45

Если знаешь точное имя файла, можно вставить VP:

Result = FileVP (Exists, "Name=<директория\имя файла>", "VP=File Existence;ExpectedResult=PASS")


Например:
Result = FileVP (Exists, "Name=C:\public\TestProject\TestDatastore\DefaultTestScriptDatastore\TMS_Scripts\111.rec", "VP=File Existence;ExpectedResult=PASS")


(VerificationPOint соответсвенно можно настроить и на FAIL)
  • 0

#5 {Bastion}Bizon

{Bastion}Bizon

    Новый участник

  • Members
  • Pip
  • 40 сообщений
  • ФИО:Гавриков Станислав Влааадимирович

Отправлено 13 июня 2006 - 09:38

Благодарю за присланные ответы. Они мне очень пригодились.
  • 0

#6 Froggy

Froggy

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • Город:СПб

Отправлено 15 июня 2006 - 15:24

Вопрос рядом - а как проверить существование каталога??? Проблема в том, что Вындовс после удаления пользователя оставляет его папку в Documents and Sett... Воот. А мне надо, чтоб она убилась, причем я не знаю, существовал ли пользователь с таким именем или нет (сорри, не пользователь, а учетная запись)...
  • 0

#7 greyver

greyver

    Опытный участник

  • Members
  • PipPipPipPip
  • 358 сообщений
  • ФИО:Вербенко Сергей Анатольевич
  • Город:Москва, Зеленоград


Отправлено 15 июня 2006 - 15:56

Вопрос рядом - а как проверить существование каталога??? Проблема в том, что Вындовс после удаления пользователя оставляет его папку в Documents and Sett... Воот. А мне надо, чтоб она убилась, причем я не знаю, существовал ли пользователь с таким именем или нет (сорри, не пользователь, а учетная запись)...

Просмотр сообщения

:acute: :rtfm: :good:
Можно искать по folder AND exist - это собственно то, что вы хотите.
Можно по FileSystemObject - то что приводилось в этом топике в качестве примера.
Похоже информация проскакивает мимо Вас даже Вам предназначенная. :crazy:
  • 0

#8 Froggy

Froggy

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • Город:СПб

Отправлено 15 июня 2006 - 16:56

Ну и нечего на меня орать! Ну не пользовл я раньше msdn, и вообще на Бейсикоподобных языках уж лет 10 ни строчки не написал.
  • 0

#9 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 16 июня 2006 - 09:12

выше был приведен следующий код

Function ShowFileList(folderspec)
  Dim fso, f, f1, fc, s
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.GetFolder(folderspec)
  Set fc = f.Files
  For Each f1 in fc
     s = s & f1.name 
     s = s &   "<BR>"
  Next
  ShowFileList = s
End Function

очевидно, его можно приспособить под мои нужды, но что и как в нем изменить, я не знаю..
мне надо в своей программе по очереди открывать файлы из директории и проводить с ними некоторые однотипные действия (открыл, сконвертировал, закрыл).

собссно, меня больше всего интересует именно этот вопрос - как организовать поочередное открытие файлов?

был, конечно, вариант просто натыкать их в режиме записи скрипта, но тогда при изменении/удалении файлов из директории придется изменять скрипт.
  • 0

#10 greyver

greyver

    Опытный участник

  • Members
  • PipPipPipPip
  • 358 сообщений
  • ФИО:Вербенко Сергей Анатольевич
  • Город:Москва, Зеленоград


Отправлено 16 июня 2006 - 10:09

очевидно, его можно приспособить под мои нужды, но что и как в нем изменить, я не знаю..

Что конкретно в этом коде вам не понятно?

мне надо в своей программе по очереди открывать файлы из директории и проводить с ними некоторые однотипные действия (открыл, сконвертировал, закрыл).
собссно, меня больше всего интересует именно этот вопрос - как организовать поочередное открытие файлов?

В цикле делается проход по всем файлам в директории, указаной в качестве параметра фукции.
Вам надо работать со свойствами и методами объекта файла, в коде это f1.
Методы и свойства посмотрите здесь, там можно найти и примеры.
  • 0

#11 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 16 июня 2006 - 10:42

очевидно, его можно приспособить под мои нужды, но что и как в нем изменить, я не знаю..

Что конкретно в этом коде вам не понятно?


смысл функции я понял, но ее непосредственная реализация в Robot'е для меня остается тайной..

пробовал вставить эту функцию, но robot'овский компилятор ругается на некоторые строки.

например, что делать с
..
Error: 'fso' is not a record type
..
Warning: No DIM statement for Variable 'each'
..
?
  • 0

#12 greyver

greyver

    Опытный участник

  • Members
  • PipPipPipPip
  • 358 сообщений
  • ФИО:Вербенко Сергей Анатольевич
  • Город:Москва, Зеленоград


Отправлено 16 июня 2006 - 14:14

Накладочка вышла, но об этом ниже.

например, что делать с

Error: 'fso' is not a record type

dim fso as object

Warning: No DIM statement for Variable 'each'

Забыл я, что for each в роботе не работает.
Надо помянять на следующую конструкцию.
For i =0 to fc.count-1
    s = s & fc.item(i).name
    s = s &   "<BR>"
 Next
НО. У меня это не заработало. Хотя странно, что документированное свойство item не работает.

Посему, спешу исправиться и предлагаю воспользаться этим кодом, который в роботе работает. (Выше уже предлагали использовать Dir)
function showfilesbydir (folder$)
   dim tmp$
   Dim directory
   directory=Dir (folder$, 0)
   Do While directory<>""
      tmp=tmp+folder$+directory+chr(13) ' или другие ваши действия
      directory=Dir
   Loop
   showfilesbydir=tmp
end function
Sub Main
     msgbox showfilesbydir ("c:\")
End Sub

Удачи.

Сообщение отредактировал greyver: 16 июня 2006 - 14:16

  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных