Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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.

Předmět Autor Datum
mozno celkom nerozumiem, ale sortu netreba davat ziadny paramater, rozpozna kodovanie automaticky. t…
IgorK 17.05.2006 14:28
IgorK
Už jsem částečně přišel na chybu. Textový soubor mi totiž Poznámkový blok uložil jako ANSI a ne jako…
Cairo 17.05.2006 15:10
Cairo
jak natvrdo nastavit pro Poznámkový blok ukládání v Unicode. Ano, existuje workaround. Spusť pozná…
Máslo 17.05.2006 15:21
Máslo
Jo jo, to jsem teď odzkoušel. Pokud Poznámkový blok ukládá již jednou uložený dokument, zachovává pr… poslední
Cairo 17.05.2006 15:44
Cairo

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.

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.

Zpět do poradny Odpovědět na původní otázku Nahoru