как for (cmd) читает содержимое папок и томов
От: Аноним  
Дата: 19.05.09 20:49
Оценка:
Всем здрям!

Вот такой скриптик (на языке сценариев Win) читает всё содержимое указанной папки:

for /R G:\Work\ %%i in (*) do @echo %%i

Он даже читает содержимое теневых томов, если вместо G:\Work\ подставить например такое имя \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\.
Интересует какие Api использует этот скрипт для чтения? Т.е. мне это надо реализовать самому.

Заранее спасибо
Re: как for (cmd) читает содержимое папок и томов
От: x64 Россия  
Дата: 19.05.09 21:40
Оценка:
А>Интересует какие Api использует этот скрипт для чтения?

FindFirstFile(), FindNextFile(), FindClose().
Re[2]: как for (cmd) читает содержимое папок и томов
От: krokodil955  
Дата: 20.05.09 13:51
Оценка:
Здравствуйте, x64, Вы писали:

А>>Интересует какие Api использует этот скрипт для чтения?


x64>FindFirstFile(), FindNextFile(), FindClose().


Вы уверены что используются именно эти функции?

Почему тогда такой код:

   hFind = FindFirstFile("\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1", &FindFileData);

Выдает код ошибки 2 (Не удаётся найти указанный файл)?
Re[3]: как for (cmd) читает содержимое папок и томов
От: x64 Россия  
Дата: 20.05.09 14:16
Оценка:
K>Вы уверены что используются именно эти функции?

Нет.

K>Почему тогда такой код:

K>Выдает код ошибки 2 (Не удаётся найти указанный файл)?

Думаю, стоит попробовать сделать следующим образом:

hFind = FindFirstFileW (L"\\\\?\\GLOBALROOT\\Device\\HarddiskVolumeShadowCopy1\\*.*", &FindFileData);
Re[4]: как for (cmd) читает содержимое папок и томов
От: krokodil955  
Дата: 20.05.09 19:22
Оценка:
Здравствуйте, x64, Вы писали:

x64>Думаю, стоит попробовать сделать следующим образом:


x64>
x64>hFind = FindFirstFileW (L"\\\\?\\GLOBALROOT\\Device\\HarddiskVolumeShadowCopy1\\*.*", &FindFileData);
x64>


Спасибо, заработало . Только без L впереди (так не компилило — это видно для Unicode проектов). А что означают эти две косые впереди?
Re[5]: как for (cmd) читает содержимое папок и томов
От: x64 Россия  
Дата: 20.05.09 19:37
Оценка: 3 (1)
K>Спасибо, заработало.

"Спасибо" не булькает, оценочки не забываем. И побольше, побольше!

K>Только без L впереди (так не компилило — это видно для Unicode проектов).


Да.

K>А что означают эти две косые впереди?


Не понял, что имелось в виду. \\?\ — это стандартный префикс имён для подсистемы Win32, указывается в случае, если Win32-приложение хочет использовать Native-имена. Если же недоумение вызвано удвоением косых черт, то думаю что всё таки стоит немного подучить язык.
Re[6]: как for (cmd) читает содержимое папок и томов
От: krokodil955  
Дата: 20.05.09 20:53
Оценка:
Здравствуйте, x64, Вы писали:

x64>Не понял, что имелось в виду. \\?\ — это стандартный префикс имён для подсистемы Win32, указывается в случае, если Win32-приложение хочет использовать Native-имена. Если же недоумение вызвано удвоением косых черт, то думаю что всё таки стоит немного подучить язык.


А, понятно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.