Příkazový řádek - setřídění textového souboru Unicode
Zdravím, tak tedy:
Čas od času bych rád využil příkazový řádek pod Windows XP (cmd.exe), který mimo jiné obsahuje příkaz sort pro setřídění položek textového souboru. A zatímco cmd.exe má třeba parametr pro Unicode výstup (/u), příkaz sort žádnou takovou volbu (pro vstup) nenabízí (přepínač /l je k ničemu), takže otázka zní, jak použít příkaz sort, kterému předám textový soubor v sadě Unicode, třeba napsaný v Poznámkovém bloku?
Použitý příkaz ve VBA (nekorektní řazení):
Shell Environ$("comspec") & " /u /c sort c:\test.txt > c:\test_sort.txt", vbHide
Díky.
mozno celkom nerozumiem, ale sortu netreba davat ziadny paramater, rozpozna kodovanie automaticky. teraz som si odskusal urobit testovaci subor v Unicode, kde som pouzil aj diakritiku a stacilo zavolat: sort nazov_suboru a funguje to korektne. win xp pro, sp2.
Už jsem částečně přišel na chybu. Textový soubor mi totiž Poznámkový blok uložil jako ANSI a ne jako Unicode a já si toho nevšiml. Pak dojde k následující chybě:
Řekněmě, že mám soubor test.txt s následujícím obsahem vytvořeným v Poznámkovém bloku:
červená
modrá
černá
zelená
sort test.txt vypíše tohle:
modrß
Ŕernß
Ŕervenß
zelenß
což je správně seřazený paskvil
Pokud si dávám pozor a ukládám prostřednictvím Uložit jako a vyberu Unicode, tak je vše v pořádku.
Nicméně otázka sice teď nestojí co s Unicode, ale co s ANSI... resp. jak natvrdo nastavit pro Poznámkový blok ukládání v Unicode.
Ano, existuje workaround.
Spusť poznámkový blok, dej hned uložit prázdný dokument a vyber unicode. Máš prázdný dokument který ovšem obsahuje 2 bajty: FF FE. Budeš ho používat jako template (šablonu).
Místo notepad.exe spouštěj tuhle šablonu (vytvoř si třeba zástupce). Díky tomu FF FE to notepad identifikuje jako soubor v kódování unicode a standardně bude ukládat dál jako unicode (Uložit jako...)
Jo jo, to jsem teď odzkoušel. Pokud Poznámkový blok ukládá již jednou uložený dokument, zachovává pro něj kódování (poznat je to i v dialogu Uložit jako). Dík za tip. Přesto bych někdy rád znal řešení v DOSu pro ANSI soubor. A pokud můžu ještě přisadit..
Nevím jestli mi už nehrabe, ale mám pocit, že funkce Shell pod VBA někdy potřebuje uvést interpreta příkazů (command.com, resp. cmd.exe) a někdy je možné napsat příkaz i bez něj. Nějak v tom nemám jasno, kdy ano, kdy ne. Stejně tak některé přepínače podporuje a některé ne.