Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Вниз

Переименовать директорию (папку) в windows   Найти похожие ветки 

 
Darklight ©   (2005-03-14 13:07) [0]

Подскажите пожалуйста, как переименовать папку в windows
Точнее нужно просто перевести её в название в нижний регистр, но это следует из возможности переименования папки.
Функция
Renamefile
не хочет переименовывать директории.


 
begin...end ©   (2005-03-14 13:11) [1]

> Darklight ©   (14.03.05 13:07)

У меня тоже Delphi 7 и Win2k, но RenameFile работает.


 
TUser ©   (2005-03-14 13:12) [2]

MoveFile, MoveFileEx, SHFileOperarion


 
Darklight ©   (2005-03-14 13:22) [3]

Уточню!
У меня не совсем Delphi 7 ;)
У меня Delphi 9
и приложение под платформу .NET
:(

Кстати
SHFileOperarion
В каком модуле находится?
Аналогичный вопрос
MoveFile, MoveFileEx
Просто кажется в Delphi 9 Dot Net их нет :(


 
TUser ©   (2005-03-14 13:48) [4]

ShellApi, но ее под дот нетом тоже не будет


 
Darklight ©   (2005-03-14 13:53) [5]

Перевёл приложение по win32
Попробовал
Renamefile
Movefile
MovefileEx (с флагами 0 и 1)
Ничего не помогает.


 
ghg ©   (2005-03-14 13:59) [6]

а ты попробуй для обычной папки а не для windows


 
Darklight ©   (2005-03-14 14:14) [7]

Вот на всяк случай кусок кода программы, работающий с перенаименованием:


//BEGIN SOURCE CODE

//HEADER BEGIN

unit U_Main;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Buttons, StrUtils, FileCtrl, ShellApi;

type
 TWinForm = class(TForm)
   Edit1: TEdit;
   Button2: TButton;
   procedure Button2Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 WinForm: TWinForm;

//HEADER END

//BODY FUNCTIONS BEGIN

implementation

function FindFiles(Path,Mask : String): TStrings;
Var F: TSearchRec;
   Dirs,More : TStrings;
   i : Integer;
begin
Result := TStringList.Create;
if FindFirst(Path+Mask,faReadOnly and faHidden and faSysFile and faArchive,F)=0 Then
begin
 Result.add(Path+F.Name);
 while (FindNext(F)=0) do
 begin
   Result.add(Path+F.Name);
 end;
end;
if FindFirst(Path+"*.*",faDirectory,F)=0 Then
begin
Dirs := TStringList.Create;
 if (F.Name<>".") and (F.Name <> "..") Then
   Dirs.add(Path+F.Name);
 while (FindNext(F)=0) do
 begin
   if (F.Name=".") or (F.Name = "..") Then
     continue;
   Dirs.add(Path+F.Name);
 end;
 for i := 1 to Dirs.Count do
 begin
   Result.Add(Dirs.Strings[i-1]);
   More := FindFiles(Dirs.Strings[i-1]+"\",Mask);
   Result.AddStrings(More);
   More.Free;
 end;
 Dirs.Free;
end;
end;

procedure LowerCaseFiles(Files : TStrings);
Var i : Integer;
   s1,s2,s3,s4,s5 : String;
begin
for i:=1 to Files.Count do
begin
 s1 := Files.Strings[i-1];
 if DirectoryExists(s1) then
 begin
     s2 := ExtractFileName(s1);
     s3 := ExtractFilePath(s1);
     s4 := lowercase(s2);
     s5 := s3+s4;
     //RenameFile(s1,s5);
     if MoveFile(PChar(s1),PChar(s5)) then
       beep;
 end
 else
 if FileExists(s1) then
 begin
     s2 := ExtractFileName(s1);
     s3 := ExtractFilePath(s1);
     s4 := lowercase(s2);
     s5 := s3+s4;
     RenameFile(s1,s5);
 end;
end;
end;

//BODY FUNCTIONS END

//BODY EVENT METHODS BEGIN

procedure TWinForm.Button2Click(Sender: TObject);
Var Files: TStrings;
begin
Files := FindFiles(Edit1.Text+"\","*.*");
LowerCaseFiles(Files);
Files.Free;
end;

//BODY EVENT METHODS END

//END SOURCE CODE


//Комментарии

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


 
Darklight ©   (2005-03-14 14:18) [8]

[6] Я не попку windows перименовываю :)
А в OS windows 2000 перименовываю папки !!!
:)

Любые...


 
TUser ©   (2005-03-14 16:05) [9]


> [6] Я не попку windows перименовываю :)

А ты все-таки попку попробуй :)


 
Darklight ©   (2005-03-14 19:09) [10]

[9]
Попробовал!
Не помоголо!


 
Fay ©   (2005-03-14 19:37) [11]

2 Darklight ©   (14.03.05 13:53) [5]
Чё тебе не помогает? Гениальные программистs GetLastError не используют?!


 
e-mike ©   (2005-03-14 23:41) [12]


> Fay ©   (14.03.05 19:37) [11]

нет там никакого error"a


Darklight


Справку, юноша, читайте, делайте выводы..


Delphi syntax:

function LowerCase(const S: string): string;

C++ syntax:

extern PACKAGE AnsiString __fastcall LowerCase(const AnsiString S);

Description

LowerCase returns a string with the same text as the string passed in S, but with all letters converted to lowercase. The conversion affects only 7-bit ASCII characters between "A" and "Z". To convert 8-bit international characters, use AnsiLowerCase.


 
e-mike ©   (2005-03-14 23:42) [13]

это я к тому, что скорее всего русские буквы присутствуют..


 
Darklight ©   (2005-03-15 02:03) [14]

[12] Спасибо за напоминание.
Я в курсе.
Привык я к LowerCase UpperCase.
Мне абсолютно пофиг - все папки написаны исключительно английскими буквами (A - Z, a - z).
Тестовый пример:
t:\F\FOLDER1\Folder2\FolDer3


 
e-mike ©   (2005-03-15 02:10) [15]

ну тогда, Fay, позвольте реабилитировать [11]
сеанс телепатии провалися=(


 
TUser ©   (2005-03-15 07:20) [16]

Здесь большая часть народа под win32 пишет. Может быть под .NET"ом какие-то особенности ... А вообще - код давай.


 
Darklight ©   (2005-03-15 13:19) [17]

[16] Как я уже сказал - я под win32 уже всё перевёл.
А код см выше.


 
Anatoly Podgoretsky ©   (2005-03-15 13:29) [18]

MovefileEx должен помогать, это его назначение.
The MoveFileEx function renames an existing file or directory.


 
Vit@ly ©   (2005-03-15 13:44) [19]

Странно, почему эту не перенесли. Со вчерашнего дня висит.
Точнее нужно просто перевести её в название в нижний регистр
При чем здесь Delphi и его функции (Renamefile, Movefile, MovefileEx и др)?
Сначала бы следовало бы попробовать осуществмть это с помощью любого файл-менеджера и уяснить, что для Win (в отличии от "Сёв") это одно и тоже.


 
Vit@ly ©   (2005-03-15 13:45) [20]

Не успел дописать FOLDER == folder


 
_1   (2005-03-15 14:19) [21]

Проверил на Windows 2000

c:\TEMP - папка

RenameFile("c:\TEMP", "c:\temp")

RenameFile("c:\temp", "c:\TEMP")

- обе строчки работают, и переименовывают папку с:\Temp в соответствующий регистр.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.037 c
9-1100799849
Xerx
2004-11-18 20:44
2005.03.27
OpenGL, текстурирование и пересечения


1-1111010691
Гость
2005-03-17 01:04
2005.03.27
Как писать что-нибудь в n-ной колонки ListView?


3-1109362678
ali_tash
2005-02-25 23:17
2005.03.27
как войти в базу FireBird если не знаеш пароля ?


14-1109786649
_silver
2005-03-02 21:04
2005.03.27
Белгородская сходка.


14-1110131223
k@rt
2005-03-06 20:47
2005.03.27
Анлим в Питере





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский