Ca noi toti in fiecare zi invatam cate ceva. Intamplator incercand sa ajut pe cineva am dat pe net de comanda chcp.
Sincer eu nu m-am confruntat pana acum cu o astfel de nevoie dar am zis ca este ceva interesat si merita impartasit.
Daca v-ati confruntat cu situatii cand trebuia sa gestionati fisiere, directoare care in denumire aveau caractere speciale, diacritice (ă,î,ț,ș,â), si nu reuseati sa-i dati de cap, inseamna ca nu stiati de chcp. Acum stiti :).
cmd – Chcp-change region or language code page
Comanda chcp nu face alceva decat sa afisieze/schimbe cod page-ul din consola cmd.
La windows XP este mai dificil cu denumiri care sa contina astfel de caractere. Am facut teste pe unPC cu windows 7 si pare sa nu aiba probleme de interpretarea legat de cod page-ul setat.
Practic daca vrem sa folosind cmd-ul, pentru copy, xcopy, cut, robocopy,…etc (copiat, mutat sau sincronizat sau pur si simplu afisare corecta), fisiere sau directoare, care contin caractere speciale (diacritice in special), trebuie sa avem grija sa folosim code page-ul corect. Ca sa intelegeti despre ce vorbesc vom incerca un “mic” exemplu.
Inainte de toate, pentru batranul XP care este folosit inca de multi dintre noi, trebuie sa avem grija sa fie instalat cod page-ul aferent limbajului dorit. In cazul nostru trebuie sa verificam in setari ca avem instalat cod page-ul 852 (OEM – Latin II).
Pentru asta intram in Control Panel/Regional and Language Options si selectam tab-ul “Advanced” unde avem grija sa fie selectat “Romanian” si bifat “852 (OEM – Latin II)“.
Este posibil ca dupa ce selectam Appy si OK sa solicite CD-ul cu Kit-ul de instalare, iar pentru finalizare este nevoie de un restart la PC.
Dar sa revenim la exemplu.
Avem directorul (folder) D:\Chcp_demo in care am generat un fisier txt, iar in denumirea acestuia am folosit diacritice (Semnătură.txt).
Ca sa nu uit :). Pentru asta (scris cu diacritice) avem nevoie sa activam Input Language RO. Tot din Control Panel/Regional and Language Options si selectam tab-ul “Languages” > “Details…“, din noua fereastra selectam “Settings“, dupa care “Add…“, din urmatoarea fereastra deschisa (nu am mai pus poza) selectam Romanian la Input Language: dupa care OK.
Cum spuneam vom incerca sa il copiem (fisierul Semnătură.txt) in urmatoarea cale D:\Chcp_demo\test.
Intr-o prima faza verificam in ce cod page suntem folosind comanda simpla chcp in cmd.
D:\Chcp_demo>chcp Active code page: 437
Conform tabelei de pe site-ul Microsoft 437 este cod pqge pentru US.
Code page – Country/region or language
437 – United States
850 – Multilingual (Latin I)
852 – Slavic (Latin II)
855 – Cyrillic (Russian)
857 – Turkish
860 – Portuguese
861 – Icelandic
863 – Canadian-French
865 – Nordic
866 – Russian
869 – Modern Greek
In mod normal nu ar trebui sa ne facem probleme, dar cum spuneam si mai sus, dar daca insa vrem folosim linia de comanda pentru situatii mai complexe, pentru copy/cut, sincronizat sau pur si simplu afisare corecta a unor fisiere/directoare care contin caractere specifice, atunci este obligatoriu sa folosim cod page-ul corect.
Ca verificare incercam comada dir, pentru a lista continutul directorului D:\Chcp_demo, sa vedem cum se afiseaza:
D:\Chcp_demo>dir /b Semnatura.txt test
Observam ca nu apare ă+ul in ecuatie asa ca schimbam cod page-ul in 852 – Slavic (Latin II).
D:\Chcp_demo>chcp 852 Active code page: 852
Testam iar folosind comanda dir, pentru listare.
D:\Chcp_demo>dir /b Semnătură.txt test
De aceasta data se afiseaza corect.
Hai sa facem si un mic exemplu pentru situatia in care vrem sa copiem fisierul Semnătură.txt folosind un .bat. Pentru asta vom face un fisier copy.bat.
Datorita cod page-ului atipic, sau mai exact specific, pe vrem sa-l folosim, trebuie sa avem grija cum facem acest fisier copy.bat. Mai exact trebuie sa aiba tipul de codificare pentru regiunea sau limbajul (region or language) in care va fi scris a linia de comanda, alfel nu va putea rula corect.
Ca sa fim siguri deschidem “wordpad.exe” (start>run introducem wordpad.exe si OK).
Introducem codul dorit in wordpad.
si salvam fisierul de tip Text Document – MS-DOS Format.
Ca alternativa puteti folosi si editorul de text notepad++, care este gratuit si in care puteti verifica daca fisierul are setat corect tipul de codificare.
Acum nu mai ramane decat sa executam fisierul copy.bat. Dupa cum se vede in acest fisier am pus si comanda de schimbarea a cod page-ului, just in case 🙂 .
Iar rezultatul este:
In unele cazuri este suficient ca fisierul .bat sa fie corect codificat, chiar daca cod page-ul nu este setat specific.
Altfel daca nu am fi avut cod page-ul corect, sau fisierul copy.bat codificarea corect facuta, rezultatul ar fi fost de genul:
Mai multe informatii legat de comanda chcp si cod page-uri gasiti pe site-ul Microsoft.