Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Windows
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2015, 16:24   #1
николай-1
Пользователь
 
Регистрация: 18.09.2015
Сообщений: 41
По умолчанию bat конвертер

короче хотел переименовать файлы с изменением кодировки. Написал такую штуку:
Код:
@echo off
chcp 1251
echo Пакетная обработка файлов!
echo используется команда for /R "путь к каталогу" %%U in (шаблон файлов) do %komm% "%%U"
echo введите номер кодовой страницы (1251 - для WIN, 65001 - для utf-8, 20866 - KOI8 и т.д.)
echo или ENTER  - сохранить эту и продолжить
set /p kodirovka=
chcp %kodirovka%
:s
           echo  Введите путь к каталогу : 
 set /p putem=
if not exist %putem%\nul (echo "Такого каталога не существует" &goto s)
cd /d %putem%
               echo Введите шаблон файлов :
 set /p shabl=                        
:op

for /R .\ %%U in (%shabl%) do (ren %%U < iconv -f utf8 - t win1251 "%%U") %%U"
а в самой команде запутался. ???
Вообще то это был многократный обработчик мелкими командами, думал адаптировать... и запутался Кто ж в наши дни ватники пишет, а иногда нужно

Последний раз редактировалось Stilet; 28.09.2015 в 16:39.
николай-1 вне форума Ответить с цитированием
Старый 28.09.2015, 16:45   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

А зачем это нужно?
Имена файлов хранятся в UTF-16 и от кодировки не зависят.
waleri вне форума Ответить с цитированием
Старый 28.09.2015, 18:45   #3
николай-1
Пользователь
 
Регистрация: 18.09.2015
Сообщений: 41
По умолчанию

а иногда файлы русскими буквами ( кириллицей ) пишут, и при закачке Wget-ом козяблики получаются и сайт не работет. Если сменить кодировку в файле просто, например iconv для винды есть и куча всяких ГУИутилит, то для имен файлов даже convmv не нашел для винды. Сперва думал на рубике написать но там еще больше получится. И мудренее.
николай-1 вне форума Ответить с цитированием
Старый 28.09.2015, 18:47   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
А зачем это нужно?
Имена файлов хранятся в UTF-16 и от кодировки не зависят.
Не смешите. В Реестре кодировки прописаны. Вот только рыться в литературе - лениво.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.09.2015, 18:56   #5
николай-1
Пользователь
 
Регистрация: 18.09.2015
Сообщений: 41
По умолчанию

А может знаете что нибудь вроде convmv? И где скачать, только для виндовс. Я яндексом весь нет на все лады потрошил, всякие утилиты пробовал, и все не то. Нет такой функции в маленьких утилках под винду что ли?
николай-1 вне форума Ответить с цитированием
Старый 28.09.2015, 19:40   #6
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,774
По умолчанию

Я хотел такую фичу в свою тестовую утилиту LiteConv добавить, но пока не добавил.
Vapaamies вне форума Ответить с цитированием
Старый 28.09.2015, 20:08   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Не смешите. В Реестре кодировки прописаны. Вот только рыться в литературе - лениво.
NTFS хранит имена файлов в UTF-16. Ройтесь сколько угодно.

Цитата:
Сообщение от николай-1 Посмотреть сообщение
Нет такой функции в маленьких утилках под винду что ли?
А смысл? Кодировку содержимого файла вы изменить можете, отсюда и конверторы, кодировки имени файла вы изменить не можете, посему конверторов и нет.

Последний раз редактировалось Stilet; 28.09.2015 в 20:28.
waleri вне форума Ответить с цитированием
Старый 28.09.2015, 21:05   #8
николай-1
Пользователь
 
Регистрация: 18.09.2015
Сообщений: 41
По умолчанию

Цитата:
А смысл? Кодировку содержимого файла вы изменить можете, отсюда и конверторы, кодировки имени файла вы изменить не можете, посему конверторов и нет.
Может я не так выразился? мне ведь в ручную скопировать имя файла в текстовый редактор ничего не мешает. Потом перекодировать в 1251 из utf8 и переименовать файл в то что получилось. Что помешает автоматизировать ? Да и convmv in linux есть.

Боязно как то изпод linux в NTFS обрабатывать.

Последний раз редактировалось николай-1; 28.09.2015 в 21:14.
николай-1 вне форума Ответить с цитированием
Старый 29.09.2015, 08:37   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Боязно как то изпод linux в NTFS обрабатывать.
Чего боязно-то? Все функции эквивалентны, если в системные папки лазить не будете, проблем не будет.
Насчет батника я бы подумал про другую схему - Вы же можете получить список всех имен файлов по шаблону (ну типа dir или ls, не знаю чем Вы там обрабатываете). И получить список перекодированных имен. А потом уже провести переименование имен.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 29.09.2015, 09:35   #10
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от николай-1 Посмотреть сообщение
Потом перекодировать в 1251 из utf8 и переименовать файл в то что получилось.
А откуда взялось UTF8?

Цитата:
Сообщение от николай-1 Посмотреть сообщение
Да и convmv in linux есть.
А при чем здесь Линукс? Под Windows такой утилиты быть не может, поскольку все всегда хранится в UTF-16.

Цитата:
Сообщение от николай-1 Посмотреть сообщение
Боязно как то изпод linux в NTFS обрабатывать.
Вы меня окончательно сбили с толку. Вы под какой ОС работаете? Мы в разделе Windows, вы спрашиваете про bat файл - откуда Линукс?

Если у вас проблемы с wget, то лучше не делать глупостей а попробовать так:
chcp 65001
wget upload file

В этом случае wget должен читать имена файлов в UTF8 формате.

Последний раз редактировалось waleri; 29.09.2015 в 09:43.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BAT. Автоматизация. Передать команду в другой bat после его запуска. Человек_Борща Windows 13 03.02.2014 11:08
конвертер Host-2013 Общие вопросы Delphi 25 03.02.2013 21:48
Конвертер Макспч21 Помощь студентам 0 05.05.2012 12:19
Конвертер VanHelsing C# (си шарп) 6 17.10.2011 14:25