2012-06-26 3 views
12

잘못된 디렉토리를 만드는 응용 프로그램이 있습니다 ... 예 : c:\Program Files\somedirectory. - 마침표는 디렉토리 이름의 일부입니다.Delphi : 잘못된 폴더 이름 바꾸기

이제 델파이에서 파일 이름 바꾸기에 대해 알고있는 모든 것을 시도했습니다.

  • 여기서 RenameFile (파일 1, 파일 2)
  • 있는 MoveFile (을 File1,있는 File2)
  • 등이 ...

나는 짧은 경로 ExtractShortPathName을 창문을 받고 시도했지만 이것은 단지 빈 문자열을 반환 . (commandPrompt에서 호출 : "ShortOldName을 NewName을 RENAME")

을 이제 내가 cmd를 그것을 수동으로 할 수 있습니다 알고 있지만 내 모든 파일을 통해 갈 수있는 시간을 보내고하려고하지 오전 그것을 할)

나는에서 ShellExecute 여기에 사용하는 가장 좋은 방법은 아니라는 것을 알고

xshortname := ExtractFileName(ExtractShortPathName(ns + oldName)); 
    xNewName := newName; 

    cmdTxt := PWideChar('/C cd ' + ns); 
    cmdTxt2 := PWideChar(cmdTxt + '&&' + ' RENAME ' + xshortname + ' ' + #34 + xNewName + #34); 
    ShellExecute(0, nil, 'cmd.exe', cmdTxt2, nil, SW_SHOWNORMAL); 

:

여기 내 코드의 비트입니다. 나는 악취가 나는 것을 얻으려고하고있다. 나중에 최적화하고 적절한 델파이 코딩에 대해 걱정할 것입니다.

내 질문은 : 누구든지 잘못된 디렉토리의 이름을 바꿀 수있는 기능을 알고 있습니까?

답변

16

당신은 특별한 방법으로 폴더의 이름을 전달하는 경우는 표준 Windows API 함수 MoveFile()를 사용할 수 있습니다

MoveFile('\\?\D:\invalid_dir.', '\\?\D:\invalid_dir.fixed'); 

대신

MoveFile('D:\invalid_dir.', 'D:\invalid_dir.fixed'); 

더가 MSDN에서 찾을 수 있습니다에 대해 주제 아래 "Naming Files, Paths, and Namespaces" 특히 파일 이름에 마침표를 넣지 말 것을 권고합니다.

+0

완벽하게 작동했습니다. 고맙습니다! 어디서나 검색되었습니다. 나는 SO가 실망하지 않을 것임을 알았다. –