Форум: "Основная";
Текущий архив: 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