Reputation: 412
One of my users asked why my application does not support semicolons in filenames. I stepped through my code, and it seems Windows function GetOpenFileName truncates any filename containing a semicolon. E.g., "one;two.wav" -> "one".
Microsoft says colons are not allowed, but it doesn't mention semicolons...
Naming Files, Paths, and Namespaces
Are they legal or not?
And how can I get GetOpenFileName() to work with semicolons in a filename?
OH! Weird; the filename is correct, except 'scrolled' off to the left. So "one;two.wav" looks like "two.wav" until I click it and press left-arrow (then it's fine). So it's not a bug as such, only weird behaviour.
Upvotes: 9
Views: 15989
Reputation: 60972
Semicolons are legal in NTFS file paths.
Use any character in the current code page for a name, including Unicode characters and characters in the extended character set (128–255), except for the following:
The following reserved characters:
<
(less than)>
(greater than):
(colon)"
(double quote)/
(forward slash)\
(backslash)|
(vertical bar or pipe)?
(question mark)*
(asterisk)- Integer value zero, sometimes referred to as the ASCII NUL character.
- Characters whose integer representations are in the range from 1 through 31, except for alternate streams where these characters are allowed.
- Any other character that the target file system does not allow.
I'm able to add semicolons to filenames on my Windows 7 system. Watch for code, probably yours or third-party code, that does strange things with unexpected characters (most notably spaces).
Upvotes: 12
Reputation: 41
Though it may be omitted in the Windows handbooks, the semicolon is a reserved character too, for example "dir .dat;.bak" is a legal command. The same applies to the plus character, for example "copy test1.dat+test2.dat test3.dat" is a legal command.
Upvotes: 4
Reputation: 21
True: Windows allows a semicolon in file names. But when you burn such files to a data CD or DVD disc, the names get truncated. This I experienced when using aHead Nero version 9.
Upvotes: 2
Reputation: 32596
Yes. A semi-colon is a legal character in a Windows file-name. It wouldn't surprise me, though, if there were other programs that had a problem with them.
Upvotes: 1
Reputation: 2527
Yes, they are allowed. Just that if you are running them in the command line you have to put quotes within them.
Upvotes: 1