If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|
Thread Tools | Display Modes |
#1
|
|||
|
|||
Explorer filename sorting - disable ignoring of the hyphen ("-") char ?
Hello All,
My previous subject "Explorer filename sorting problem - NoStrCmpLogical already present" has evolved into a much simpler one: How do I get XP's explorer (but the "dir" command too!) to stop ignoring the minus sign inside filenames 60.00.00.32.dds 60.00.00.32.msh 60.00.00.32.nif 60.00.32.32.dds 60.00.-32.32.dds 60.00.32.32.msh 60.00.-32.32.msh 60.00.32.32.nif 60.00.-32.32.nif the reason why the above is "sorted" as it is -- with the third column showing an interleaved "33" and "-32" -- is because the minus sign is regarded as a hyphen (a word-coupling character) and ignored. The above list than translates to: 60.00.00.32.dds 60.00.00.32.msh 60.00.00.32.nif 60.00.32.32.dds 60.00.32.32.dds 60.00.32.32.msh 60.00.32.32.msh 60.00.32.32.nif 60.00.32.32.nif .... which makes (some sort of) sense. But as those "-" characters inthge first list are *NOT* hypens (but minus-signs) that second list isn't reflecting the meaning of the filenames contents. :-( tl;dr: How do I get XP's explorer (and "dir" command too) to stop ignoring the minus sign inside filenames. Or more in general: How do I stop it from treating *any* character specially, and just sort all of them on their binary value. Regards, Rudy Wieser |
Ads |
#2
|
|||
|
|||
Explorer filename sorting - disable ignoring of the hyphen ("-") char ?
R.Wieser wrote:
My previous subject "Explorer filename sorting problem - NoStrCmpLogical already present" has evolved into a much simpler one: How do I get XP's explorer (but the "dir" command too!) to stop ignoring the minus sign inside filenames 60.00.00.32.dds 60.00.00.32.msh 60.00.00.32.nif 60.00.32.32.dds 60.00.-32.32.dds 60.00.32.32.msh 60.00.-32.32.msh 60.00.32.32.nif 60.00.-32.32.nif the reason why the above is "sorted" as it is -- with the third column showing an interleaved "33" and "-32" -- is because the minus sign is regarded as a hyphen (a word-coupling character) and ignored. The above list than translates to: 60.00.00.32.dds 60.00.00.32.msh 60.00.00.32.nif 60.00.32.32.dds 60.00.32.32.dds 60.00.32.32.msh 60.00.32.32.msh 60.00.32.32.nif 60.00.32.32.nif ... which makes (some sort of) sense. But as those "-" characters inthge first list are *NOT* hypens (but minus-signs) that second list isn't reflecting the meaning of the filenames contents. :-( tl;dr: How do I get XP's explorer (and "dir" command too) to stop ignoring the minus sign inside filenames. Or more in general: How do I stop it from treating *any* character specially, and just sort all of them on their binary value. Regards, Rudy Wieser In text strings, there is no such thing as a number, even less so a negative number. With NoStrCmpLogical, there is no such thing as a number in a text string; i.e., sorting is ASCII order. The smart ordering would interpret a numerical *character* (or contiguous substring of them) as having a numerical value; however, I doubt smart ordering considers any scaling prefixes (+ or -) as numerical modifiers but just simple ASCII (alphabetic) characters. That a number or series of them are in a string won't be known until the + or - have already been passed over. How would a parser looking at a text string discern a subtring of characters represented a number? By trigging on the first instance of a numerical character. If it triggered its parsing to include the + and - characters, what would it do with "abc--def" versus "abc-0-def"? Perhaps it could require that a + or - be immediately followed by a numerical character to include the + or - in the numerical value but what would it do with "abc-4+5-def"? You see them and want them to be signed numbers. Somehow parsing has to determine the same thing. A boundary has to be detected to determine when there is a substring that could be interpreted as a number. A trailing hyphen after non-numerical characters won't trigger that the next character must be a numerical character. Not until the 3 is reached during parsing would it be known that the prior hyphen meant a negative number was in the string; however, that would require the parser to move backward after finding the first numerical character. That's doable in code but probably not present in the filename parser. Most parsers don't like to or cannot move backward (unless they provide a buffer, like a variable, to track backwards). Do it yourself. Take a piece of paper with a cutout the size of just 1 character. Start moving the hole across a long string. When do you know that there is an ASCII character that could represent a number? The first time you hit a character in the range of "0" to "9". You have already passed any hyphen or plus character before you can switch to an interpretation of numerical value as a substring. Parsing usually just moves forward. If you want to emulate numerical ordering based on substrings within a text string then make sure to use characters in the same columnar position that will effect that ordering. + (43) sorts before - (45). Stop using non-signed numerical strings to represent a positive value. If some substrings are going to be interpreted as numerical then ALL substrings must be signed. +32 will sort before -32. If you don't want to show a + character for positive values then use a space (so the numbers align in the same column); however, adding spaces into filenames runs into other parsing problems, like you forgetting to enclosed a filename with spaces by using double-quotes. Alas, if you want sorting to be in signed numerical order with negative values listed before positive values, this trick won't work. You will need to use a substitute character for + that sorts after -, like = (61) or ~ (126). |
#3
|
|||
|
|||
Explorer filename sorting - disable ignoring of the hyphen ("-") char ?
A shorter answer:
If you want to include some signed numbers (interpreted by parsing text strings) then ALL numerical substrings must be signed. You are adding "-" to represent negative numerical values. So use "+" for all the positive numerical strings. |
#4
|
|||
|
|||
Explorer filename sorting - disable ignoring of the hyphen ("-") char ?
VanguardLH,
In text strings, there is no such thing as a number, even less so a negative number. You and I know (want) that, MS is of a fully other idea. Hence the NoStrCmpLogical registry setting (to disable MS'es idea of sorting on values embeded in filenames). If you want to include some signed numbers (interpreted by parsing text strings) then ALL numerical substrings must be signed. You misunderstood: I do not want to sort on a numeric value embedded in filenames, I just want the sorting process to stop ignoring certain characters in filenames. With NoStrCmpLogical, there is no such thing as a number in a text string; i.e., sorting is ASCII order You are the second person doing this: Ignoring the facts infront of you (the provided filename list) which shows nothing of the sort. DON'T DO THAT. Please! It feels incredibly rude. .... still waiting for a (possible) method to switch to pure ASCII/binary sorting. Regards, Rudy Wieser -- Origional message: VanguardLH schreef in berichtnieuws ... A shorter answer: If you want to include some signed numbers (interpreted by parsing text strings) then ALL numerical substrings must be signed. You are adding "-" to represent negative numerical values. So use "+" for all the positive numerical strings. |
#5
|
|||
|
|||
Explorer filename sorting - disable ignoring of the hyphen ("-") char ?
R.Wieser wrote:
VanguardLH, In text strings, there is no such thing as a number, even less so a negative number. You and I know (want) that, MS is of a fully other idea. Hence the NoStrCmpLogical registry setting (to disable MS'es idea of sorting on values embeded in filenames). If you want to include some signed numbers (interpreted by parsing text strings) then ALL numerical substrings must be signed. You misunderstood: I do not want to sort on a numeric value embedded in filenames, I just want the sorting process to stop ignoring certain characters in filenames. You said: with the third column showing an interleaved "33" and "-32" yet none of your examples has a "33" substring. I also did not get what you meant by "translated" since it looked like you were trying to show what sorting order would get used for the prior examples of filenames (where none had "33" in them). Yet the translated list has duplicate filenames which are not allowed within a folder. No "33" examples and not sure what the 2nd list was supposed to convey. Was your 1st list supposed to exemplify the resultant sort order of the filenames shown by Windows Explorer? Or was the 2nd "translated" list what you see for sort order? Which entries were supposed to contain the "33" substring? With NoStrCmpLogical, there is no such thing as a number in a text string; i.e., sorting is ASCII order You are the second person doing this: Ignoring the facts infront of you (the provided filename list) which shows nothing of the sort. DON'T DO THAT. Please! It feels incredibly rude. Who else (up to the time of this reply) has participated in THIS discussion? I only see you and I in *this* discussion. Um, just *who* was it that started TWO DISCONNECTED threads on the same topic? Oh yeah, that was you. If you start multiple disconnected discussions on the same subject, don't expect others to aggregate them all together. With multiple threads, expect a different set of respondents in each. If you want to keep the discussions together then don't start separate threads. If you demand that respondents rebuild your threads into one to gather up all the disconnected posts then I can easily step aside and let you glean a solution from those numerous respondents you have received so far. In fact, I didn't even see your prior nearly-the-same thread. It got flagged as Ignored by my kill filters and I use a default view that hides Ignored-flagged threads. I hide them rather than delete them. I reviewed my kill filters to find one of them has incorrect regex looking for political posts: it was supposed to look for "pres(ident(ial)) (elect)" but I had a wildcard in there that resulted in matching on "present" which was in your Subject. However, even after I fix my rule, I still won't go collating all posts made within the same day or within the same week made by the same poster. I pick a thread and respond to that one. I'm not the one that chopped the discussion into separate pieces with multiple threads. |
#6
|
|||
|
|||
Explorer filename sorting - disable ignoring of the hyphen ("-") char ?
I did not know what you were trying to represent with your "translated"
list of filenames and there were no example filenames containing "33". Using only your 1st list of filenames, which we 60.00.00.32.dds 60.00.00.32.msh 60.00.00.32.nif 60.00.32.32.dds 60.00.-32.32.dds 60.00.32.32.msh 60.00.-32.32.msh 60.00.32.32.nif 60.00.-32.32.nif I put those into a file (input.txt) and ran it through the 'sort' program by running at the command line: sort input.txt /o output.txt The sorted output looked like: 60.00.-32.32.dds 60.00.-32.32.msh 60.00.-32.32.nif 60.00.00.32.dds 60.00.00.32.msh 60.00.00.32.nif 60.00.32.32.dds 60.00.32.32.msh 60.00.32.32.nif ^ |__ differentiates starting here (col 7) Is this 2nd list what you expected for sort order for the filenames shown in Windows Explorer? This is a simple columnar sort, so at character position #7, the output sort order is due to ASCII order of: "-" is before "0" "0" is is before "3" I think you mentioned something about extension grouping in your other thread. Perhaps you have Windows Explorer configured to sort by filetype rather than by filename. Make sure Windows Explorer is configured to sort by Name and not by Type. Did sorting work when you used ALL signed numerical values (+ for positive values, - for negative values) instead of just adding a hyphen to the negative numerical values? With the same column of values all signed so the input looked like: 60.00.+00.32.dds 60.00.+00.32.msh 60.00.+00.32.nif 60.00.+32.32.dds 60.00.-32.32.dds 60.00.+32.32.msh 60.00.-32.32.msh 60.00.+32.32.nif 60.00.-32.32.nif the 'sort' program produced an output list of: 60.00.-32.32.dds 60.00.-32.32.msh 60.00.-32.32.nif 60.00.+00.32.dds 60.00.+00.32.msh 60.00.+00.32.nif 60.00.+32.32.dds 60.00.+32.32.msh 60.00.+32.32.nif This has all the negative values listed before the zero values before the positive values (columns 7-9, inclusive) Alas, I'm not at a Windows XP machine right now to see if Windows Explorer will sort in the same order as the 'sort' program. |
#8
|
|||
|
|||
Explorer filename sorting - disable ignoring of the hyphen ("-") char ?
VanguardLH,
Is this 2nd list what you expected for sort order for the filenames shown in Windows Explorer? Yes. Or any sorting method where all the same symbols are grouped together (preferrably in 0...9 and a...z order ofcourse). I would not even too much mind if the group with the minus signs would appear *after* all the digits (mind you, sorting a list containing "+", "-" and digit symbols the ASCII way would not really be intuitive either. :-) ) Perhaps you have Windows Explorer configured to sort by filetype rather than by filename. Same kind of thought here. I've had Explorer open in details view and removed all but the filename column and refreshed. Nothing changed to the sorted order of the filenames. Did sorting work when you used ALL signed numerical values (+ for positive values, - for negative values) instead of just adding a hyphen to the negative numerical values? Yes, but not for the good reason: "-32" comes, ASCII wise, after "+32". But if we (again) ignore the hypen it still stays true: "30" comes, ASCII wise, after "+30" As a test I changed one of the "+00" values (of the "+32"/"-32" column) into "000". File Explorer than shows the values starting with the "+" symbol first, than the "000", and only than the "-32" values -- which, when you disregard the minus signs, is logical order. However, if I than change one of the other "+00" combinations to "-00" (its value doesn't change) than it gets put between the last "+32" but before the "000" (same as "dir /one" does by the way). Regards, Rudy Wieser -- Origional message: VanguardLH schreef in berichtnieuws ... I did not know what you were trying to represent with your "translated" list of filenames and there were no example filenames containing "33". Using only your 1st list of filenames, which we 60.00.00.32.dds 60.00.00.32.msh 60.00.00.32.nif 60.00.32.32.dds 60.00.-32.32.dds 60.00.32.32.msh 60.00.-32.32.msh 60.00.32.32.nif 60.00.-32.32.nif I put those into a file (input.txt) and ran it through the 'sort' program by running at the command line: sort input.txt /o output.txt The sorted output looked like: 60.00.-32.32.dds 60.00.-32.32.msh 60.00.-32.32.nif 60.00.00.32.dds 60.00.00.32.msh 60.00.00.32.nif 60.00.32.32.dds 60.00.32.32.msh 60.00.32.32.nif ^ |__ differentiates starting here (col 7) Is this 2nd list what you expected for sort order for the filenames shown in Windows Explorer? This is a simple columnar sort, so at character position #7, the output sort order is due to ASCII order of: "-" is before "0" "0" is is before "3" I think you mentioned something about extension grouping in your other thread. Perhaps you have Windows Explorer configured to sort by filetype rather than by filename. Make sure Windows Explorer is configured to sort by Name and not by Type. Did sorting work when you used ALL signed numerical values (+ for positive values, - for negative values) instead of just adding a hyphen to the negative numerical values? With the same column of values all signed so the input looked like: 60.00.+00.32.dds 60.00.+00.32.msh 60.00.+00.32.nif 60.00.+32.32.dds 60.00.-32.32.dds 60.00.+32.32.msh 60.00.-32.32.msh 60.00.+32.32.nif 60.00.-32.32.nif the 'sort' program produced an output list of: 60.00.-32.32.dds 60.00.-32.32.msh 60.00.-32.32.nif 60.00.+00.32.dds 60.00.+00.32.msh 60.00.+00.32.nif 60.00.+32.32.dds 60.00.+32.32.msh 60.00.+32.32.nif This has all the negative values listed before the zero values before the positive values (columns 7-9, inclusive) Alas, I'm not at a Windows XP machine right now to see if Windows Explorer will sort in the same order as the 'sort' program. |
#9
|
|||
|
|||
Explorer filename sorting - disable ignoring of the hyphen ("-") char ?
R.Wieser wrote:
My previous subject "Explorer filename sorting problem - NoStrCmpLogical already present" has evolved into a much simpler one: How do I get XP's explorer (but the "dir" command too!) to stop ignoring the minus sign inside filenames 60.00.00.32.dds 60.00.00.32.msh 60.00.00.32.nif 60.00.32.32.dds 60.00.-32.32.dds 60.00.32.32.msh 60.00.-32.32.msh 60.00.32.32.nif 60.00.-32.32.nif the reason why the above is "sorted" as it is -- with the third column showing an interleaved "33" and "-32" -- is because the minus sign is regarded as a hyphen (a word-coupling character) and ignored. The above list than translates to: 60.00.00.32.dds 60.00.00.32.msh 60.00.00.32.nif 60.00.32.32.dds 60.00.32.32.dds 60.00.32.32.msh 60.00.32.32.msh 60.00.32.32.nif 60.00.32.32.nif ... which makes (some sort of) sense. But as those "-" characters inthge first list are *NOT* hypens (but minus-signs) that second list isn't reflecting the meaning of the filenames contents. :-( tl;dr: How do I get XP's explorer (and "dir" command too) to stop ignoring the minus sign inside filenames. Or more in general: How do I stop it from treating *any* character specially, and just sort all of them on their binary value. Had some more time to play. Yep, Microsoft handles the hyphen a bit weird, like they ignore it. They are doing something goofy regarding non-alphanumeric characters. What I did was to replace the hyphen with a different non-alphanumeric character, like tilde, underscore, or backquote, so the list looks like: 60.00.~32.32.nif 60.00._32.32.nif 60.00.`32.32.nif 60.00.~32.32.dds 60.00._32.32.dds 60.00.`32.32.dds 60.00.~32.32.msh 60.00._32.32.msh 60.00.`32.32.msh 60.00.00.32.dds 60.00.00.32.dds 60.00.00.32.dds 60.00.00.32.msh or 60.00.00.32.msh or 60.00.00.32.msh 60.00.00.32.nif 60.00.00.32.nif 60.00.00.32.nif 60.00.32.32.dds 60.00.32.32.dds 60.00.32.32.dds 60.00.32.32.msh 60.00.32.32.msh 60.00.32.32.msh 60.00.32.32.nif 60.00.32.32.nif 60.00.32.32.nif To get the same order using the 'dir' command, you have to add the /on argument, as in: dir /on (or 'dir /o-n' if you descend sort in Windows Explorer). |
#10
|
|||
|
|||
Explorer filename sorting - disable ignoring of the hyphen ("-") char ?
VanguardLH,
Yep, Microsoft handles the hyphen a bit weird, like they ignore it. .... To get the same order using the 'dir' command, you have to add the /on argument, as in: Thanks for confirming my posted observations. They are doing something goofy regarding non-alphanumeric characters. Yep, that was my conclusion too. It might well be only the hyphen symbol though, but who knows. When wrote the above I realized I did not even search for an MS explanation to this sorting behaviour. Alas, a quick search did not turn up anything in that regard ... And that brings me back to my initial question: How do I get Windows to drop all kinds of fancy sorting rules and revert to (something like) ASCII order ? .... though I would not mind if upper and lowercase differences are ignored (man, I do not make it easy, do I ? :-D ) Regards, Rudy Wieser -- Origional message: VanguardLH schreef in berichtnieuws ... R.Wieser wrote: My previous subject "Explorer filename sorting problem - NoStrCmpLogical already present" has evolved into a much simpler one: How do I get XP's explorer (but the "dir" command too!) to stop ignoring the minus sign inside filenames 60.00.00.32.dds 60.00.00.32.msh 60.00.00.32.nif 60.00.32.32.dds 60.00.-32.32.dds 60.00.32.32.msh 60.00.-32.32.msh 60.00.32.32.nif 60.00.-32.32.nif the reason why the above is "sorted" as it is -- with the third column showing an interleaved "33" and "-32" -- is because the minus sign is regarded as a hyphen (a word-coupling character) and ignored. The above list than translates to: 60.00.00.32.dds 60.00.00.32.msh 60.00.00.32.nif 60.00.32.32.dds 60.00.32.32.dds 60.00.32.32.msh 60.00.32.32.msh 60.00.32.32.nif 60.00.32.32.nif ... which makes (some sort of) sense. But as those "-" characters inthge first list are *NOT* hypens (but minus-signs) that second list isn't reflecting the meaning of the filenames contents. :-( tl;dr: How do I get XP's explorer (and "dir" command too) to stop ignoring the minus sign inside filenames. Or more in general: How do I stop it from treating *any* character specially, and just sort all of them on their binary value. Had some more time to play. Yep, Microsoft handles the hyphen a bit weird, like they ignore it. They are doing something goofy regarding non-alphanumeric characters. What I did was to replace the hyphen with a different non-alphanumeric character, like tilde, underscore, or backquote, so the list looks like: 60.00.~32.32.nif 60.00._32.32.nif 60.00.`32.32.nif 60.00.~32.32.dds 60.00._32.32.dds 60.00.`32.32.dds 60.00.~32.32.msh 60.00._32.32.msh 60.00.`32.32.msh 60.00.00.32.dds 60.00.00.32.dds 60.00.00.32.dds 60.00.00.32.msh or 60.00.00.32.msh or 60.00.00.32.msh 60.00.00.32.nif 60.00.00.32.nif 60.00.00.32.nif 60.00.32.32.dds 60.00.32.32.dds 60.00.32.32.dds 60.00.32.32.msh 60.00.32.32.msh 60.00.32.32.msh 60.00.32.32.nif 60.00.32.32.nif 60.00.32.32.nif To get the same order using the 'dir' command, you have to add the /on argument, as in: dir /on (or 'dir /o-n' if you descend sort in Windows Explorer). |
#11
|
|||
|
|||
Explorer filename sorting - disable ignoring of the hyphen ("-") char ?
R.Wieser wrote:
How do I get Windows to drop all kinds of fancy sorting rules and revert to (something like) ASCII order A lot of behaviors in Windows Explorer are hard coded (well, all of them are but I mean in that you don't get any options to remove some of the unwanted behavior). It will show .zip files as folders (unless you deregister the zipfldr.dll). It will handle some "special" folders differently; for example, as I recall, navigate to C:\Windows and double click on the Fonts folder. It won't show the contents of the Fonts folder within Windows Explorer but instead opens the font manager dialog. Perhaps a non-Microsoft file manager would provide more sane sorting; e.g., FreeCommander, MultiCommander, Explorer++ (all freeware). There are free editions of crippled paywa Xplorer2 Lite, XYplorer Free, Directory Opus Light. I have not used any of them. Folks in the alt.comp.freeware newsgroup might have some experience with them. Users that don't like the behaviors or deficiences of Windows Explorer often use a replacement. |
#12
|
|||
|
|||
Explorer filename sorting - disable ignoring of the hyphen ("-") char ?
VanguardLH,
A lot of behaviors in Windows Explorer are hard coded (well, all of them are but I mean in that you don't get any options to remove some of the unwanted behavior). :-) I was hoping that there would be a setting somewhere that I could change, such as you can do with the NoStrCmpLogical registry setting. That I currently do not know of such a possibility could just be a lack of my knowledge in this regard. Hence my asking. Alas, you do not seem to know of such a possibility either. Bummer ... Perhaps a non-Microsoft file manager would provide more sane sorting; That would, just as with MS, fully depend on who's programming it. :-) But yes, that would be a possibility. I could even have a go at it myself. Just have to remember to use shlwapi's "C" variant of its StrCmp functions. Regards, Rudy Wieser -- Origional message: VanguardLH schreef in berichtnieuws ... R.Wieser wrote: How do I get Windows to drop all kinds of fancy sorting rules and revert to (something like) ASCII order A lot of behaviors in Windows Explorer are hard coded (well, all of them are but I mean in that you don't get any options to remove some of the unwanted behavior). It will show .zip files as folders (unless you deregister the zipfldr.dll). It will handle some "special" folders differently; for example, as I recall, navigate to C:\Windows and double click on the Fonts folder. It won't show the contents of the Fonts folder within Windows Explorer but instead opens the font manager dialog. Perhaps a non-Microsoft file manager would provide more sane sorting; e.g., FreeCommander, MultiCommander, Explorer++ (all freeware). There are free editions of crippled paywa Xplorer2 Lite, XYplorer Free, Directory Opus Light. I have not used any of them. Folks in the alt.comp.freeware newsgroup might have some experience with them. Users that don't like the behaviors or deficiences of Windows Explorer often use a replacement. |
Thread Tools | |
Display Modes | |
|
|