2012-09-01

nsg21: (Default)
2012-09-01 11:16 pm
Entry tags:

кириллица в именах файлов

Представим себе абстрактного продвинутого пользователя. Есть у него каталог развесистой структуры, в нём лежат файлы. Хочет этот пользователь получить список этих файлов одним куском. Да нет проблем, на то он и продвинутый. Открывает чёрное окошко, пишет "dir /b /s >z" и готово.
Это в случае, если русских букв в именах файлов нету. А если есть, то они будут заменены знаком вопросика, для вашего же удобства. Что делать в этом случае продвинутому?

Я знаю что я сделал бы в таком случае. Написал бы что-то вроде этого:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var folder = fso.GetFolder(".");
//var subFlds = new Enumerator(folder.SubFolders);
var files = new Enumerator(folder.Files);
var out=fso.CreateTextFile("z",true,true);
for (; !files.atEnd(); files.moveNext()) {
    out.WriteLine(files.item());
}

Но нормальные-то люди как обходятся? Или я не знаю какой-то секретной кнопки?
А то как-то слишком много писанины для такой тривиальной операции.

Update:
1) вспомнил что бывает Powershell, который умеет много гитик, в том числе не портить юникод в именах файлов
2) cmd.exe /U /c dir /b /s >z файл при этом будет ucs-2le, а не utf8