[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】批处理如何把文本转换成ANSI格式?

本帖最后由 大地 于 2025-3-28 15:48 编辑

【已解决】批处理如何把文本转换成ANSI格式?

在此感谢各路大神的热心支持和帮助!!

我用7Z从1.EXE中提取他的版本信息,提取出来的version好像是unicode格式的,用 > 导出来自动转换成ANSI格式的 转换成了新的1.TXT,结果仍是unicode格式,用type提取内容生成新的1.TXT,结果还不是ANSI格式的,试了好多都不行,看看好像挺简单的,折腾了我好久没搞定。也试了AI,没搞定,唉,当然我不想用手动另存为ANSI格式的,我想用批处理解决。哪位大神 有没有更好的办法?谢谢。

回复 2# czjt1234

用7Z把system32下的taskmgr.exe打开,再打开.rsrc,把里面的version复制出来,
然后用  type version > 1.txt  把version.txt里面的内容复制到1.txt中,结果生成的1.txt好像仍是unicode格式的
我主要是为了提取他的第一行,为了确定是那个系统版本,可惜不能转化为ANSI格式,批处理就不能自动判断是哪个版本了
所以求大神指点一下,或者改用其它方法也可。
((有些精简系统不一定有power shell功能,所以最好仍是用批处理解决))

TOP

本帖最后由 大地 于 2025-3-28 09:52 编辑

回复 7# Five66

我用以下命令提取出来的文件,生成的version.txt
"C:\Program Files\7-Zip\7Z.exe" e %SystemRoot%\System32\Taskmgr.exe -ir!.rsrc\version.txt -y


我用以下的代码,无法读取版本号:
@echo off
setlocal enabledelayedexpansion
set /p line=<version.txt
set substr=!line:~20,5!
echo 截取结果:%substr%
pause
endlocal


再改用 type version > 1.txt 生成的1.txt
再用以下代码提取里面的版本号,仍无法读取,不显示
@echo off
setlocal enabledelayedexpansion
set /p line=<1.txt
set substr=!line:~20,5!
echo 截取结果:%substr%
endlocal
pause
同样无法读取字段


最后手动新建一个2.txt,同样复制version.txt里面的内容或自已随意在第一行输入一定量的字母和数据,再或者用刚才7Z导出的version.txt用手动并保存为ANSI格式的(其它没有作多余的动作),
同样的代码可以读取里面的字段
@echo off
setlocal enabledelayedexpansion
set /p line=<2.txt
set substr=!line:~20,5!
echo 截取结果:%substr%
pause
endlocal
可以读取显示版本号


((主要是精简系统,有时候玩PE系统,有时无法运行powershell功能,所以暂时没找到更好的方案))。再试试其它各位大神提供的方案。谢谢。

TOP

本帖最后由 大地 于 2025-3-28 13:42 编辑

回复 11# Five66

测试成功,大神大牛了!!(代码又简单)

另外老师:

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('""C:\Program Files\7-Zip\7Z.exe" e "%SystemRoot%\System32\Taskmgr.exe" -ir!.rsrc\version.txt -y" -so ^| sort /r') do (
    set "line=%%a"
    goto ProcessLine
)
:processLine
set "substr=!line:~20,5!"
echo 截取结果:!substr!
pause
endlocal


这个代码问题出在哪里,显示
command Line Error:
incorrect windcard type markerr.rsrc\version.txt
截取结果:~20.5

但单行执行是正确的 合并后就不对了  好像是那个 单引号或双引号不对?还是怎么的?

TOP

返回列表