<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=14321</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=14321&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: Искажение кодировки при отладке скрипта».]]></description>
		<lastBuildDate>Tue, 07 Jan 2025 21:41:09 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=161877#p161877</link>
			<description><![CDATA[<p>Возможно кому-то пригодится для батника.<br />Скрипт от <span style="color: #FFCC00"><strong>mozers</strong></span> в моём случае открывал лог после каждой строчки лога.</p><p><strong>Вот с правками:</strong><br />1. Несколько строк заметок + автооткрытие файла.<br />2. Переменная с путём до лога и названием лога, с учётом создания *.tmp.<br />3. Файл bat в кодировке OEM866, файл лога в Windows-1251 (что дефолтно для Windows блокнота).</p><p>Автору большущее спасибо за труд и Большого здоровья ;-)</p><div class="codebox"><pre><code>
echo Запись журнала выполнения...
rem Путь и название лога
set logsysopt=%temp%\Log_SD.txt
rem Содержание лога
(
echo 1. Строка №1.
echo 1. Строка №2.
echo 1. Строка №3.
echo Конец.
echo _______
echo.
) &gt;&gt; &quot;%logsysopt%.tmp&quot; 2&gt;&amp;1
@for /f &quot;tokens=*&quot; %%a in (%logsysopt%.tmp) do call :866to1251 %%a
del %logsysopt%.tmp
rem Открытие лога
start &quot;&quot; &quot;%logsysopt%&quot;
goto :logsysopt_end2
:866to1251
chcp 1251 &gt;nul
echo %*&gt;&gt;%logsysopt%
chcp 866 &gt;nul
goto :eof
:logsysopt_end2
</code></pre></div><p>Важно!<br />В логе спецсимволы должны быть заэкранированы знаком ^ так: ^(Тут слово^), иначе *.tmp не создастся и *.txt не откроется</p>]]></description>
			<author><![CDATA[null@example.com (biffick)]]></author>
			<pubDate>Tue, 07 Jan 2025 21:41:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=161877#p161877</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=161876#p161876</link>
			<description><![CDATA[<div class="quotebox"><cite>mozers пишет:</cite><blockquote><p><strong>Xameleon</strong>, да не за что (чой то зацепила меня эта темка).<br />Сделал 3 наглядных примера с корректным русским выводом лога в кодировках dos866, win1251, uft16le.</p><p>Разрешите еще пару малюсеньких замечаний (не по теме треда) по твоему исходному батнику:<br />1. <span style="color: blue">if exist %LOG_FILE_PATH% del %LOG_FILE_PATH%</span> не нужно, если в начале записи в файл поставить <span style="color: blue">&gt;</span> а не <span style="color: blue">&gt;&gt;</span>.<br />2. Рекомендую во все батники добавлять команду <span style="color: blue">pushd &quot;%~dp0</span>&quot; которая позволит корректно запустить его не только из текущего каталога, а откуда угодно.</p></blockquote></div><br /><p>Просто очень большое спасибо! Никак с этой проблемой справиться не мог для лога оптимизационного батника. Лог должен создаться и открыться в дефолтном текстовом редакторе системы. А какой редактор - неизвестно, но чаще всего дефолтный Блокнот Win.</p><p>С наступившим новым 2025 годом!</p>]]></description>
			<author><![CDATA[null@example.com (biffick)]]></author>
			<pubDate>Tue, 07 Jan 2025 01:01:51 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=161876#p161876</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=129921#p129921</link>
			<description><![CDATA[<div class="quotebox"><cite>mozers пишет:</cite><blockquote><p>Иногда это действительно нужно, но чаще всего - нет.</p></blockquote></div><p>Вот как раз с этим утверждением я и не могу согласиться, коллега.</p><p>В моём понимании пакетный файл, скрипт должны работать именно с текущим каталогом. Пакетный файл/скрипт лежит в одном, единственном месте и работает везде. Для обращения к каталогу, где содержится сам пакетный файл есть %~dp0, а для скрипта есть аналогичный механизм в виде FSO.GetParentFolderName(WScript.ScriptFullName). Мы не таскаем пакетный файл/скрипт за уши по всем каталогам — мы используем потребный каталог как текущий и указываем полный путь для запуска пакетного файла/скрипта на исполнение.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 20 Nov 2018 17:31:17 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=129921#p129921</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=129900#p129900</link>
			<description><![CDATA[<p><strong>alexii</strong><br />Просто надо помнить что скрипт в общем случае запускается не в том каталоге где он находится, а в том, откуда был запущен.<br />Соответственно все заданные в скрипте относительные пути будут отсчитываться от места запуска.<br />Иногда это действительно нужно, но чаще всего - нет. Поэтому надо:<br />- либо отказаться от использования относительных путей,<br />- либо в начале скрипта сменить каталог командой CD /D или PUSHD.<br />Так что &quot;категорически&quot; я бы не стал рекомендовать ничего. И то что пакетный файл будет работать в своем каталоге, никак не ограничивает его использование.</p>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Mon, 19 Nov 2018 10:11:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=129900#p129900</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=129873#p129873</link>
			<description><![CDATA[<div class="quotebox"><cite>mozers пишет:</cite><blockquote><p>2. Рекомендую во все батники добавлять команду pushd &quot;%~dp0&quot; которая позволит корректно запустить его не только из текущего каталога, а откуда угодно.</p></blockquote></div><p>Категорически не рекомендую этого делать. Чтобы можно было использовать пакетный файл в любом каталоге, а не только в том каталоге, в котором он расположен <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Fri, 16 Nov 2018 16:44:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=129873#p129873</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=129867#p129867</link>
			<description><![CDATA[<p><strong>mozers</strong></p><div class="quotebox"><blockquote><p>1. if exist %LOG_FILE_PATH% del %LOG_FILE_PATH% не нужно, если в начале записи в файл поставить &gt; а не &gt;&gt;.<br />2. Рекомендую во все батники добавлять команду pushd &quot;%~dp0&quot; которая позволит корректно запустить его не только из текущего каталога, а откуда угодно.</p></blockquote></div><p>Да, я в курсе. Благодарю. ) Первую строчку я оставил, чтоб было удобнее комментить на момент отладки, а вторую конструкцию использую только если подразумевается запуск из сети, а так как скрипт размещается локально, решил убрать.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Fri, 16 Nov 2018 10:58:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=129867#p129867</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=129864#p129864</link>
			<description><![CDATA[<p><strong>Xameleon</strong>, да не за что (чой то зацепила меня эта темка).<br />Сделал 3 наглядных примера с корректным русским выводом лога в кодировках dos866, win1251, uft16le.</p><p>Разрешите еще пару малюсеньких замечаний (не по теме треда) по твоему исходному батнику:<br />1. <span style="color: blue">if exist %LOG_FILE_PATH% del %LOG_FILE_PATH%</span> не нужно, если в начале записи в файл поставить <span style="color: blue">&gt;</span> а не <span style="color: blue">&gt;&gt;</span>.<br />2. Рекомендую во все батники добавлять команду <span style="color: blue">pushd &quot;%~dp0</span>&quot; которая позволит корректно запустить его не только из текущего каталога, а откуда угодно.</p>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Fri, 16 Nov 2018 08:36:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=129864#p129864</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=129863#p129863</link>
			<description><![CDATA[<p><strong>mozers</strong>, огромное спасибо ! ) То что надо ! Пойду внедрять. Крайне Вам признателен за помощь !</p><p>P.S Вчера пытался добиться результата тем же путём, но не знал про ключ <strong>/u</strong> при запуске <strong>cmd</strong></p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Fri, 16 Nov 2018 07:34:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=129863#p129863</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=129840#p129840</link>
			<description><![CDATA[<p><strong>Xameleon</strong>,<br />еще один &quot;более современный&quot; вариант с выводом лога в уникоде (utf16le). Запускать через _start.cmd</p>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Thu, 15 Nov 2018 20:45:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=129840#p129840</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=129834#p129834</link>
			<description><![CDATA[<div class="quotebox"><cite>Xameleon пишет:</cite><blockquote><p>А как Вы предлагаете это сделать ?</p></blockquote></div><p>В просмотрщике ФАРа или утилита <strong>od</strong> (так <strong>od -c</strong> или так <strong>od -a</strong>) из cygwin/git-for-windows. Главное - увидеть ascii коды кириллицы, они узнаваемые.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 15 Nov 2018 18:43:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=129834#p129834</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=129833#p129833</link>
			<description><![CDATA[<p><strong>Xameleon</strong>,<br />вот рабочий пример. Винда русская (7 и 10). А, впрочем, пофиг.<br />WSH выдает все (echo и ошибки) в кодировке dos866 (независимо от кодировки консоли).</p>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Thu, 15 Nov 2018 18:33:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=129833#p129833</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=129831#p129831</link>
			<description><![CDATA[<p><strong>Rumata</strong>,</p><p>результат всё тот же:<br /></p><div class="codebox"><pre><code>
Запуск скрипта
РїСЂРёРІРµС‚
РїСЂРёРІРµС‚
C:\Users\superuser\Desktop\test\debug.js(3, 1) ЋиЁЎЄ  ўлЇ®«ҐЁп Microsoft JScript: ЏаҐ¤Ї®« Ј Ґвбп  «ЁзЁҐ ®ЎкҐЄв 

Завершение скрипта
</code></pre></div><div class="quotebox"><blockquote><p>Еще одна подсказка. Посмотрите, в какой кодировке jscript выдает свои ошибки.</p></blockquote></div><p>А как Вы предлагаете это сделать ? )</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Thu, 15 Nov 2018 17:50:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=129831#p129831</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=129830#p129830</link>
			<description><![CDATA[<div class="quotebox"><cite>Xameleon пишет:</cite><blockquote><p> В Вашем примере ошибки скрипта выдаются на английском, а у меня на русском. У вас англоязычная Windows ?</p></blockquote></div><p>Да. </p><p>Еще один вариант. Сделайте редирект целого блока кода. Так Вы избавитесь от необходимости &quot;редиректить&quot; каждую команду и следить на предмет отсутствия/наличия лог-файла. Вот пример:<br /></p><div class="codebox"><pre><code>
@echo off

set &quot;LOGDIR=%~dp0LOGS&quot;
set &quot;LOGFILE=%LOGDIR%\%~n0.log&quot;

if not exist &quot;%LOGDIR%&quot; mkdir &quot;%LOGDIR%&quot;

&gt;&quot;%LOGFILE%&quot; (
	echo:Запуск скрипта
	cscript //nologo debug.js 2&gt;&amp;1
	echo:Завершение скрипта
)
</code></pre></div><p>Еще одна подсказка. Посмотрите, в какой кодировке jscript выдает свои ошибки.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 15 Nov 2018 16:30:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=129830#p129830</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=129828#p129828</link>
			<description><![CDATA[<p><strong>Rumata</strong>,<br />так в том то и беда, что даже вставка латиницы ни чем не помогает ! ) При этом я получаю всё ту же лажу с кодировкой ошибок скрипта:<br /></p><div class="codebox"><pre><code>
Script started 
C:\Users\auto08\Desktop\js_debug\test.js(8, 1) ЋиЁЎЄ  ўлЇ®«ҐЁп Microsoft JScript: ЏаҐ¤Ї®« Ј Ґвбп  «ЁзЁҐ ®ЎкҐЄв 

Script finished 
</code></pre></div><p>И я буду только рад отказаться от переключения кодировки, если это возможно.<br />Мне вот другое интересно. В Вашем примере ошибки скрипта выдаются на английском, а у меня на русском. У вас англоязычная Windows ? Я к чему веду - у меня такая проблема на всех русскоязычным машинах, что Win 7, что Win 10.<br />Поэтому и бьюсь об стену этой беды.</p><p><strong>mozers</strong>, живой примерчик скинуть можете ? )</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Thu, 15 Nov 2018 15:44:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=129828#p129828</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Искажение кодировки при отладке скрипта]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=129825#p129825</link>
			<description><![CDATA[<p><strong>Xameleon</strong>,<br />Я бы поступил проще, оставив батник в кодировке dos866. Лог с сообщениями и ошибками (и батника и скрипта) будет вполне читабельным (только тоже в dos866).<br />Единственный момент - вместо WSH.StdOut.WriteLine надо использовать WSH.Echo.<br />Да, ключ //U - убрать.</p>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Thu, 15 Nov 2018 14:27:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=129825#p129825</guid>
		</item>
	</channel>
</rss>
