Что нового

[Ошибки] Использование двоеточия в _ScreenCapture_Capture

Heler

Знающий
Сообщения
70
Репутация
11
При выполнении следующего кода получаем файл нулевого размера, с названием количества часов.
Код:
#include <ScreenCapture.au3>
_ScreenCapture_Capture("S:\"&@HOUR&":"&@MIN&".jpg")

А если допустим использовать в качестве разделителя часов и минут не двоеточие, а точку с запятой, то будет все нормально. Получим файл 17;54.jpg.
Код:
#include <ScreenCapture.au3>
_ScreenCapture_Capture("S:\"&@HOUR&";"&@MIN&".jpg")

Версия AutoIT 3.3.4.0. Это баг или я не правильно использую функцию? =)
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
Heler
Я думаю, проблема в том, что символ ":" (двоеточие) запрещено использовать в именах файлов... Его назначение - обозначать имена дисков (C:, D: и так далее)...
 

Otherworld

Новичок
Сообщения
19
Репутация
0
Это можно проверить, напечатав двоеточие в имени любого файла.
 
Автор
H

Heler

Знающий
Сообщения
70
Репутация
11
Извиняюсь. Туплю :rofl:
Всем спасибо!
 

SyDr

Сидра
Сообщения
651
Репутация
158
Самое интересное, что для NTFS в первом случае размер файла вовсе не нулевой. В свойствах указывается только размер "безымянного" потока.
В этом легко убедится :smile: Достаточно, скопировать нужный поток в другой файл или вообще сразу открыть его, как файл.
 
Автор
H

Heler

Знающий
Сообщения
70
Репутация
11
SyDr, у меня тоже файловая система NTFS. Объясните пожалуйста, что Вы имели в виду :smile: Каким способом Вы определили что не нулевой файл выходит. Свойства говорят обратное :smile:
Код:
-rwxrw-r--   1 heler  wheel     -        0 Jun 27 22:06 22
 

SyDr

Сидра
Сообщения
651
Репутация
158
Wikipedia сказал(а):
Alternate data streams (ADS)
Alternate data streams allow more than one data stream to be associated with a filename, using the filename format "filename:streamname" (e.g., "text.txt:extrastream"). Alternate streams are not listed in Windows Explorer, and their size is not included in the file's size. Only the main stream of a file is preserved when it is copied to a FAT-formatted USB drive, attached to an e-mail, or uploaded to a website. As a result, using alternate streams for critical data may cause problems. NTFS Streams were introduced in Windows NT 3.1, to enable Services for Macintosh (SFM) to store Macintosh resource forks. Although current versions of Windows Server no longer include SFM, third-party Apple Filing Protocol (AFP) products (such as Group Logic's ExtremeZ-IP) still use this feature of the file system.
Malware has used alternate data streams to hide its code;[13] some malware scanners and other special tools now check for data in alternate streams. Microsoft provides a tool called Streams[14] to allow users to view streams on a selected volume.
Very small ADS are also added within Internet Explorer (and now also other browsers) to mark files that have been downloaded from external sites: they may be unsafe to run locally and the local shell will require confirmation from the user before opening them.[15] When the user indicates that he no longer wants this confirmation dialog, this ADS is simply dropped from the MFT entry for downloaded files.
Some media players have also tried to use ADS to store custom metadata to media files, in order to organize the collections, without modifying the effective data content of the media files themselves (using embedded tags when they are supported by the media file formats such as MPEG and OGG containers); these metadata may be displayed in the Windows Explorer as extra information columns, with the help of a registered Windows Shell extension that can parse them, but most media players prefer to use their own separate database instead of ADS for storing these information (notably because ADS are visible to all users of these files, instead of being managed with distinct per-user security settings and having their values defined according to user preferences).
Выполни в консоли:
Код:
dir C:\ >> test.txt:hidden
Результат - файл нулевого размера. Однако, если использовать, например, copy или more:
Код:
copy test.txt:hidden test2.txt
Можно убедиться в том, что файл не пуст (данные ведь откуда то берутся, верно?).
 
Автор
H

Heler

Знающий
Сообщения
70
Репутация
11
Код:
S:\>dir C:\ >> test.txt:hidden

S:\>dir
 Том в устройстве S имеет метку DATA
 Серийный номер тома: 3611-3F9F

 Содержимое папки S:\
27.06.2010  23:33                 0 test.txt

S:\>copy test.txt:hidden test2.txt
test.txt:hidden
Синтаксическая ошибка в имени файла, имени папки или метке тома.
Скопировано файлов:         0.

S:\>
Использую Win7. У меня такой трюк не прошел.
SyDr, за информацию Вам большое спасибо. Суть вловил.

P.S. Вы были правы. Через прогу Streams видно.
Код:
S:\>streams 00

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

S:\00:
          :04.jpg:$DATA 701698

S:\>streams test.txt

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

S:\test.txt:
          :hidden:$DATA 1417

S:\>
 
Верх