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

回复 1# 大地

假设 1.txt 文本文件是 unicode 编码或 utf-8 编码,可用以下的 powershell 转码方法转为系统默认的 ansi(即 gb2312 简中编码)

一。unicode 转为 ansi,存为 test-1.bat 与 1.txt 文件同目录运行
  1. @echo off &powershell "$s=(gc 1.txt -raw -enc 'unicode');sc 1.new.txt $s" &pause&exit/b
复制代码
二。utf-8 转为 ansi,存为 test-2.bat 与 1.txt 文件同目录运行
  1. @echo off &powershell "$s=(gc 1.txt -raw -enc 'utf8');sc 1.new.txt $s" &pause&exit/b
复制代码
如果确认 1.txt 文本文件的编码是 unicode(utf-16),亦可试用以下更简单的方法转码为 ansi(即 gb2312 简中编码)
  1. @echo off &chcp 936>nul
  2. type 1.txt>1.new.txt &pause&exit/b
复制代码

TOP

回复 1# 大地

用 powershell 直接获取指定 *.exe 文件的版本号,例如以下代码可以直接获取 ‘任务管理器’ 的版本号...
  1. powershell "(dir 'C:\windows\system32\Taskmgr.exe').versionInfo.productVersion"
复制代码

TOP

本帖最后由 aloha20200628 于 2025-3-27 19:19 编辑

回复 1# 大地

再给一个 bat+jscript 版本,存为 test.bat 运行,直接获取指定的执行文件版本号...
  1. 2>1/* ::
  2. @echo off &set "exeF=C:\windows\system32\Taskmgr.exe"
  3. for /f "delims=" %%v in ('cscript -e:jscript "%~f0" "%exeF%" ') do echo,%%v
  4. pause&exit/b */
  5. v=WSH.arguments,fso=WSH.CreateObject('Scripting.FileSystemObject')
  6. WSH.echo(fso.GetFileVersion(v(0)))
复制代码

TOP

本帖最后由 aloha20200628 于 2025-3-28 15:38 编辑

回复 1# 大地

系统已经内置了用 vbs/jscript/powershell 直接获取文件版本号的功能,6楼、8楼已经提供了批处直调 powershell 版本和批处混编 jscript 版本,再给一个批处直调 mshta+vbs 版本...
  1. @echo off &set "exeF=C:\windows\system32\Taskmgr.exe"
  2. for /f "delims=" %%v in ('mshta vbscript:execute("set sa=createobject(""scripting.filesystemobject""):sa.getstandardstream(1).write(sa.GetFileVersion(""%exeF%"")):close"^)') do (echo,%%v)
  3. pause&exit/b
复制代码

TOP

返回列表