批处理将文本编码转换成ANST格式

如何弄啊要求转换后输出,输出的文件名为原文件名+转换.txt... 如何弄啊
要求转换后输出 ,输出的文件名为 原文件名+转换.txt
展开
 我来答
LJ_SunTB
推荐于2016-06-25 · TA获得超过1404个赞
知道小有建树答主
回答量:766
采纳率:0%
帮助的人:814万
展开全部
转换文本编码,需先指定转换前编码类型和转换后编码类型
从问题可知,转换后指定编码类型为ANSI(不是ANST)

:: By LJ_SunTB【百度知道 BAT-GO 团】

::示例将原配置文件编码由UTF-8转换为ANSI(GB2312)
::code1=ANSI(GB2312)
::code2=Big5
::code3=Shift_JIS
::code4=EUC-KR
::code5=UTF-8
::code6=Unicode

@echo off & setlocal enabledelayedexpansion
::设置文件转换前编码类型,请参考上面编码序号,序号5即指code5也就是UTF-8编码
set aaa=5
::设置文件转换后编码类型,请参考上面编码序号,序号1即指code1也就是ANSI(GB2312)编码
set bbb=1
::设置要转换的文件名
set file=test.txt
set wfiles=%file%
::开始转换

echo !aaa!|findstr /be "[1-6]" >nul ||goto :eof
echo !bbb!|findstr /be "[1-6]" >nul ||goto :eof
if "!aaa!" == "!bbb!" goto :eof

echo>MakeBOM.vbs Set objFSO = CreateObject("Scripting.FileSystemObject")
echo>> MakeBOM.vbs Set objFile = objFSO.CreateTextFile("Unicode.BOM",,true)
cscript //Nologo MakeBOM.vbs

set codepth=编码转换后
md %codepth%\tmp

:loop
set vvv=!aaa!
if "!aaa!" == "6" set vvv=!bbb!

for /f "tokens=%vvv%" %%a in ("936 950 932 949 65001") do (reg add "HKCU\Console\%%SystemRoot%%_System32_cmd.exe" /v CodePage /t REG_DWORD /d %%a /f >nul)

if not "!aaa!" == "6" (
if not "!bbb!" == "6" (
start /wait /min cmd /u /c "for %%a in (%%wfiles%%) do copy Unicode.BOM tmpfile.tmp&type "%%~fa" >> tmpfile.tmp&move /y tmpfile.tmp %codepth%\tmp\"%%~nxa""
set aaa=6
set wfiles=%codepth%\tmp\*
goto loop
)
)

if "!bbb!" == "6" (
start /wait /min cmd /u /c "for %%a in (%%wfiles%%) do copy Unicode.BOM tmpfile.tmp&type "%%~fa" >> tmpfile.tmp&move /y tmpfile.tmp %codepth%\"%%~nxa""
) else (start /wait /min cmd /c "for %%a in (%%wfiles%%) do type "%%~fa" > %codepth%\"%%~nxa"")

reg delete "HKCU\Console\%%SystemRoot%%_System32_cmd.exe" /v CodePage /f >nul
del MakeBOM.vbs
del Unicode.BOM
move /y "%codepth%\%file%" "%file%"
rd /s /q "%codepth%"
qop_dob
2020-05-07 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:79%
帮助的人:3882万
展开全部
不清楚你的实际文件/情况,仅以问题中的样例/说明为据;复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起运行
<# :
cls
@echo off
rem 将多个txt由UTF-8编码转化为ANSI编码
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::Default))) -Args '%~dp0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$path=$args[0];
$oldenc=[Text.Encoding]::UTF8;
$newenc=[Text.Encoding]::Default;
$newfolder=$path+'#result';
if(-not (test-path -liter $newfolder)){[void](md $newfolder)};
$files=@(dir -liter $path|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
for($i=0;$i -lt $files.length;$i++){
write-host $files[$i].Name;
$text=[IO.File]::ReadAllText($files[$i].FullName, $oldenc);
$newfile=$newfolder+'\'+$files[$i].Name;
[IO.File]::WriteAllText($newfile, $text, $newenc);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友94f02eb
2010-08-24 · TA获得超过8612个赞
知道大有可为答主
回答量:7955
采纳率:74%
帮助的人:4395万
展开全部
有工具的,可以批量转换,非常方便的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sudoku52
2020-05-08 · TA获得超过7万个赞
知道大有可为答主
回答量:1.2万
采纳率:82%
帮助的人:4743万
展开全部
需要用批处理来解决文本编码的问题时,我通常推荐大家使用一个小巧的第三方工具wfr来实现。
百度搜索“ 白杨 免费”就可下载和查看使用说明。有需要再追问吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一丈高楼
2012-04-20 · 超过21用户采纳过TA的回答
知道答主
回答量:172
采纳率:0%
帮助的人:158万
展开全部
还是用小工具来的实用些,可以用飞梭飞梭TXT文本数据处理百宝箱,它里面有个编码转换小工具。处理速度非常快,在多特,天空等网站上可以下载。这个工具是免费的,如果不会使用,在它的官方网站:郑州易网科技上有教程。也可以问我。哦…… 这个软件是免费的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式