Показать полную графическую версию : Не могу переимновать файл
KoRn0509
01-01-2014, 05:20
Привет всем.
Имеется файл без расширения, к примеру "abc" мне нужно его переименовать с точкой "abc." как так возможно сделать?
KoRn0509
К такому файлу или каталогу, который с точкой в конце имени, нельзя будет обратиться из системы штатными средствами.
Или это и есть ваша цель?
PS
Создал такой файл. В проводнике он всё равно смотрится как без точки. И только если назвать как "abc..", то показывается как "abc.": точка в конце файла при обращении к нему рассматривается как отсутствие расширения, и отбрасывается.
108558
Теперь не могу удалить даже теми методами, что создавал. :-D
PPS
И даже хитрее получается: в проводнике Win-7 точки в обоих случаях видны -- одна и две. А в TotalCmd 8.50 Beta14 x64 -- ноль и одна.
Файлы удалил в режиме формата имён 8.3, где они смотрятся уже без точки.
Dzirt2005
01-01-2014, 13:28
нельзя будет обратиться из системы штатными средствами. »
Из системы, в смысле через WinAPI, очень даже можно, ничего криминального здесь нет. Но вот Explorer - да. С такими файлами работать не умеет.
PS: Far прекрасно работает с такими файлами и каталогами в полном объеме, копирование, переименование, редактирование и т.д.
в смысле через WinAPI, очень даже можно »
Собственно, я и создавал их штатными методами -- используя \\?\"Путь-имя-файла"
PS
PS: Far прекрасно работает с такими файлами и каталогами в полном объеме »
Вспомнилось древнее, DOS-овское, когда бухгалтеры создавали файлы с пробелами в именах (типа "1995 12.ххх" -- некоторые программы не делали проверку на допустимость символов: до длинных имён было далеко, и пробел в записи FAT отделял имя от расширения), а потом удивлялись, когда не могли такой файл обработать другими программами. На помощь приходил Norton Commander, который позволял как править и распечатывать (если обработка была несложной), так и переименовывать файлы с пробелами в имени.
Хотелось бы таки услышать — зачем?
Dzirt2005
01-01-2014, 16:10
и пробел в записи FAT отделял имя от расширения »
Этого _никогда_ не было. Расширение от имени файла всегда отделяла точка. И в файловой записи на диске было выделено ровно 11 байт для гранения имени файла - первые 8 байт для имени, последние три - для расширения. Точка не хранилась вообще. Неиспользуемые символы в конце имени и расширения (например, для имени файла 1.tt) заполнялись пробелами и сам пробел был недопустимым для имени файла символом. Другое дело, что в дремучие времена старых MS-DOS в программе нужно было именно так и работать - в ручную заполнять эти 11 байт в правильном виде, но можно было в принципе заполнить чем угодно - система не делала проверок на корректность символов в этих 11-ти байтах. Естественно, что такие кривые имена потом сама же не могла найти при вызовах FindFirst/FindNext, но программно можно было такой файл открыть/переименовать/удалить и т.д.
Да, к Far'у это не имеет никакого отношения, он работает с такими именами файлов честно, при помощи WinAPI, никаких хаков не используется.
Этого _никогда_ не было »
Я выразился упрощённо (не смог быстро подобрать краткую точную формулировку). Вы --точнее (и, соответственно, длиннее :) ).
При синтаксическом разборе имени файла штатными функциями первый же пробел в файловой записи рассматривался как конец имени, даже если после него в первых восьми символах были и другие символы, и разбор переходил к расширению (последним трём символам).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC