I have an application that creates invalid Directories…
e.g. c:\Program Files\somedirectory. – the period is a part of the directory name.
Now, I have tried everything that I know about renaming a file in delphi.
- RenameFile(file1,file2)
- MoveFile(File1,File2)
- etc…
I have tried getting the windows short path ExtractShortPathName but this just returns an empty string.
(to call in commandPrompt: “RENAME ShortOldName NewName”)
Now I know I can manually do it in cmd but I am not about to spend the time to go through all my files and do it 😉
Here is a bit of my code:
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);
I know shellExecute is not the best method to be using here.
I am just trying to get the stinker to work. I will worry about optimizing and proper Delphi coding later.
So my question is: Does anyone know of a function that will allow me to rename an invalid directory?
You can use the standard Windows API function MoveFile() if you pass the name of the folder in a special way:
instead of
More about it can be found on MSDN under the “Naming Files, Paths, and Namespaces” topic. Note that it specifically advises against putting trailing dots in file names.