View previous topic :: View next topic |
Author |
Message |
GGS
Joined: 02 May 2009 Posts: 322
|
(Separately) Posted: Wed Oct 14, 2009 11:23 Post subject: Параметр %F. Как изменить кодовую страницу списка? |
|
|
При параметре кнопки %F список файлов создаётся в CP-1251 (WinXP-rus).
Как это изменить на CP-866 для корректной передачи в обработку CMD.exe?
Например, такая кнопка при кириллических именах не работает:
Code: | TOTALCMD#BAR#DATA
cmd /k
FOR /F "delims=\" %%i IN (%F) do COPY "%%i" "%%~i_tmp"
TotalCmd.exe
TEST
-1
|
! | Avada: | Тему переношу в общие вопросы. Давайте соблюдать правила. | |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Wed Oct 14, 2009 12:07 Post subject: |
|
|
GGS
А с %UF или %WF? _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
VadiMGP
Joined: 21 Mar 2007 Posts: 1625
|
(Separately) Posted: Wed Oct 14, 2009 14:32 Post subject: |
|
|
Avada
Не прокатит, думаю. Это же юникод, а не ОЕМ.
Аналогичная проблема была решена тут - http://forum.wincmd.ru/viewtopic.php?p=34314#34314
VadiMGP wrote: | Твоя проблема в русских буквах. Коммандер пишет файл в кодировке Windows, а в батнике Windows предполагает, что все в кодировке ОЕМ.
Попробуй скачать http://www.gbordier.com/gbtools/download/stringconverter.exe (или что-то аналогичное) и переписать батник в виде:
Code: | c:\Tools\stringconverter.exe %1 %1.OEM /OEM
for /F "tokens=*" %%i in (%1.OEM) do c:\Tools\AuCDtect\auCDtect.exe -v -m0 "%%i" >>check.txt
del %1
|
|
|
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Wed Oct 14, 2009 14:47 Post subject: |
|
|
Либо можно не в кнопке комнаду писать, а в батнике, в котором в начале задать: _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
VadiMGP
Joined: 21 Mar 2007 Posts: 1625
|
(Separately) Posted: Wed Oct 14, 2009 15:15 Post subject: |
|
|
Batya
Уверен? По-моему это меняет только кодовую страницу самой консоли, а на чтение файлов не влияет. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Wed Oct 14, 2009 16:57 Post subject: |
|
|
VadiMGP
Дык, попробуй
Батник: Code: | @echo off
chcp 1251 >nul
FOR /F "delims=\" %%i IN (%1) do COPY "%%i" "%%~i_tmp" |
Вызывать с параметром %F. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
VadiMGP
Joined: 21 Mar 2007 Posts: 1625
|
(Separately) Posted: Wed Oct 14, 2009 17:52 Post subject: |
|
|
Batya
Попробовал. Да, в случае соманды copy работает. Но попробуй заменить copy на echo.  |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Wed Oct 14, 2009 17:57 Post subject: |
|
|
VadiMGP wrote: | Но попробуй заменить copy на echo. |
Поробовал. Знаю, что выдаются крокозябры, но ведь в первом посте рассматривается именно "copy". _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
VadiMGP
Joined: 21 Mar 2007 Posts: 1625
|
(Separately) Posted: Wed Oct 14, 2009 18:12 Post subject: |
|
|
У ты какой буквоед. Ну ведь явно же тестовый батник.
Кстати, в том же первом посте было спрошено как изменить кодировку файла.  |
|
Back to top |
|
 |
GGS
Joined: 02 May 2009 Posts: 322
|
(Separately) Posted: Wed Oct 14, 2009 18:51 Post subject: |
|
|
Batya
Вариант с батником работает, но не хочется иметь дополнительные файлы.
Нужна самодостаточная однострочная команда.
Вот так уже не работает:
Code: | TOTALCMD#BAR#DATA
cmd /k
chcp 1251 & FOR /F "delims=\" %%i IN (%F) do COPY "%%i" "%%~i_tmp"
TotalCmd.exe
TEST-1
-1
|
А ведь по сути тот же батник.
P.S. Кракозябры в окне консоли не волнуют, окно будет свёрнуто и после выполнения закрыто (cmd /c) . Сейчас просто тестовый вариант. |
|
Back to top |
|
 |
GGS
Joined: 02 May 2009 Posts: 322
|
(Separately) Posted: Wed Oct 14, 2009 21:14 Post subject: |
|
|
После некоторых извращений получилось так:
Code: | TOTALCMD#BAR#DATA
cmd /k echo chcp 1251>X.bat & echo FOR /F "delims=\" %%i IN (%1) do COPY "%%i" "%%i_tmp">>X.bat & echo DEL %0>>X.bat &
X.bat %F
TotalCmd.exe
TEST-2
-1
|
...но как-то не очень красиво. Неужели в TC нет аналогов %UF и %WF для OEM-кодировки. |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Wed Oct 14, 2009 21:40 Post subject: |
|
|
GGS wrote: | Неужели в TC нет аналогов %UF и %WF для OEM-кодировки. |
Разве что %D попробовать? _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Wed Oct 14, 2009 22:54 Post subject: |
|
|
GGS wrote: | Нужна самодостаточная однострочная команда. |
Тогда только stringconverter поможет (через &). _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
GGS
Joined: 02 May 2009 Posts: 322
|
(Separately) Posted: Wed Oct 14, 2009 23:16 Post subject: |
|
|
Batya wrote: | Тогда только stringconverter поможет (через &). |
Я ведь уточнил - самодостаточная. В пределах штатных возможностей OS, разумеется. Без сторонних «примочек». |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Thu Oct 15, 2009 00:16 Post subject: |
|
|
GGS wrote: | Без сторонних «примочек». |
И без TC
В таком случае ответ на изначальный вопрос "Как это изменить ...?" - Никак.
Могу предложить также ещё одно стороннее средство - MultiRun.vbs. Кнопка из первого поста будет такой: Code: | TOTALCMD#BAR#DATA
%Commander_Path%\Utils\WHS\MultiRun.vbs
0 cmd /c copy <<%L>> <<%L>>_tmp
%Commander_Path%\WCMICONS.DLL,50
Тест
1
-1
|
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
|