Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   Не могу переимновать файл (http://forum.oszone.net/showthread.php?t=275008)

KoRn0509 01-01-2014 05:20 2281489

Не могу переимновать файл
 
Привет всем.
Имеется файл без расширения, к примеру "abc" мне нужно его переименовать с точкой "abc." как так возможно сделать?

mwz 01-01-2014 12:41 2281526

KoRn0509

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

PS
Создал такой файл. В проводнике он всё равно смотрится как без точки. И только если назвать как "abc..", то показывается как "abc.": точка в конце файла при обращении к нему рассматривается как отсутствие расширения, и отбрасывается.

Файл 108558

Теперь не могу удалить даже теми методами, что создавал. :-D

PPS
И даже хитрее получается: в проводнике Win-7 точки в обоих случаях видны -- одна и две. А в TotalCmd 8.50 Beta14 x64 -- ноль и одна.
Файлы удалил в режиме формата имён 8.3, где они смотрятся уже без точки.

Dzirt2005 01-01-2014 13:28 2281540

Цитата:

Цитата mwz
нельзя будет обратиться из системы штатными средствами. »

Из системы, в смысле через WinAPI, очень даже можно, ничего криминального здесь нет. Но вот Explorer - да. С такими файлами работать не умеет.

PS: Far прекрасно работает с такими файлами и каталогами в полном объеме, копирование, переименование, редактирование и т.д.

mwz 01-01-2014 13:49 2281551

Цитата:

Цитата Dzirt2005
в смысле через WinAPI, очень даже можно »

Собственно, я и создавал их штатными методами -- используя \\?\"Путь-имя-файла"

PS
Цитата:

Цитата Dzirt2005
PS: Far прекрасно работает с такими файлами и каталогами в полном объеме »

Вспомнилось древнее, DOS-овское, когда бухгалтеры создавали файлы с пробелами в именах (типа "1995 12.ххх" -- некоторые программы не делали проверку на допустимость символов: до длинных имён было далеко, и пробел в записи FAT отделял имя от расширения), а потом удивлялись, когда не могли такой файл обработать другими программами. На помощь приходил Norton Commander, который позволял как править и распечатывать (если обработка была несложной), так и переименовывать файлы с пробелами в имени.

Iska 01-01-2014 15:39 2281594

Хотелось бы таки услышать — зачем?

Dzirt2005 01-01-2014 16:10 2281623

Цитата:

Цитата mwz
и пробел в записи FAT отделял имя от расширения »

Этого _никогда_ не было. Расширение от имени файла всегда отделяла точка. И в файловой записи на диске было выделено ровно 11 байт для гранения имени файла - первые 8 байт для имени, последние три - для расширения. Точка не хранилась вообще. Неиспользуемые символы в конце имени и расширения (например, для имени файла 1.tt) заполнялись пробелами и сам пробел был недопустимым для имени файла символом. Другое дело, что в дремучие времена старых MS-DOS в программе нужно было именно так и работать - в ручную заполнять эти 11 байт в правильном виде, но можно было в принципе заполнить чем угодно - система не делала проверок на корректность символов в этих 11-ти байтах. Естественно, что такие кривые имена потом сама же не могла найти при вызовах FindFirst/FindNext, но программно можно было такой файл открыть/переименовать/удалить и т.д.

Да, к Far'у это не имеет никакого отношения, он работает с такими именами файлов честно, при помощи WinAPI, никаких хаков не используется.

mwz 01-01-2014 16:21 2281631

Цитата:

Цитата Dzirt2005
Этого _никогда_ не было »

Я выразился упрощённо (не смог быстро подобрать краткую точную формулировку). Вы --точнее (и, соответственно, длиннее :) ).

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


Время: 20:26.

Время: 20:26.
© OSzone.net 2001-