Войти

Показать полную графическую версию : Обработка уникодного выхлопа. Как?


kiripanda
27-01-2011, 13:35
@echo off
cmd.exe /u /c dir /b /s /on /a-d > unicode.txt
for /f "delims=" %%f in ('type unicode.txt') do (
echo disk: "%%~df"
echo path: "%%~pf"
echo name: "%%~nf"
echo exte: "%%~xf"
)

В качестве имени файла выдаётся буква диска для 1-го файла и всё.
Как на cmd обработать то, что он сам же выдаёт? ось XP sp3 рус

amel27
27-01-2011, 15:07
Как на cmd обработать то, что он сам же выдаёт? »
TYPE определяет кодировку по BOM (http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D0.B1.D0.B0.D0.B9.D 1.82.D0.BE.D0.B2), который должен уже содержаться в файле "unicode.txt"... Либо его туда нужно предварительно записать:
@echo off

<nul >unicode.txt set /P $$=яю
cmd /u/c dir /b/s/on/a-d >>unicode.txt

for /f "delims=" %%f in ('type unicode.txt') do (
echo disk: "%%~df"
echo path: "%%~pf"
echo name: "%%~nf"
echo exte: "%%~xf"
)

Важно! Поскольку в DOS кодировке BOM представляет спецсимволы, текст команды пришлось запостить в WIN-кодировке, иначе движок форума исказит символы ("яю").

Обсуждалось тут: CMD/BAT - [решено] Изменение кодировки txt файла из ANSI в UTF-16 LE (http://forum.oszone.net/showthread.php?p=1198027&highlight=BOM#post1198027)




© OSzone.net 2001-2012