Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.27;
Скачать: CL | DM;

Вниз

Переименовать директорию (папку) в 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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.045 c
1-1110910668
tazik
2005-03-15 21:17
2005.03.27
Как написать часы со стрелками?


3-1109154818
fess
2005-02-23 13:33
2005.03.27
Копирование записей из одной таблицы в другую


14-1110456689
boriskb
2005-03-10 15:11
2005.03.27
Задача для продавца компов


1-1110533012
AlexTregubov
2005-03-11 12:23
2005.03.27
Как узнать тип шрифта - TrueType или OpenType?


1-1111001345
Sphinx
2005-03-16 22:29
2005.03.27
Пример работы с ZLib