Batch file 批处理脚本正在导出奇怪的字符

Batch file 批处理脚本正在导出奇怪的字符,batch-file,output,character,write,script,Batch File,Output,Character,Write,Script,我对脚本有问题。我会把它寄出去。 在到达这条线之前,它运行良好: wmic diskdrive list full | findstr /B "Size=" >> %cd%ProductCodes\%Serial%\PCINFO.txt 这是它发送到文件的内容。。。 楓敺ㄽ㐲ㄱ㈱㤴㈹ര਍楓敺㈽㘵㔰㤲㘶〴ര਍ 任何帮助都将不胜感激 set drive=%cd:~0,3% @echo off for /F "skip=2 tokens=2 deli

我对脚本有问题。我会把它寄出去。 在到达这条线之前,它运行良好:

wmic diskdrive list full | findstr /B "Size=" >> %cd%ProductCodes\%Serial%\PCINFO.txt
这是它发送到文件的内容。。。 楓敺ㄽ㐲ㄱ㈱㤴㈹ര਍楓敺㈽㘵㔰㤲㘶〴ര਍

任何帮助都将不胜感激

    set drive=%cd:~0,3%
@echo off
for /F "skip=2 tokens=2 delims=," %%A in ('wmic systemenclosure get serialnumber /FORMAT:csv') do (set "serial=%%A")
mkdir %cd%ProductCodes\%Serial%
 wmic path softwarelicensingservice get OA3xOriginalProductKey >> %cd%ProductCodes\%Serial%\Code.txt
wmic computersystem get model,manufacturer >> %cd%ProductCodes\%Serial%\PCINFO.txt
wmic cpu get name >> %cd%ProductCodes\%Serial%\PCINFO.txt
wmic ComputerSystem get TotalPhysicalMemory >> %cd%ProductCodes\%Serial%\PCINFO.txt
wmic diskdrive list full | findstr /B "Size=" >> %cd%ProductCodes\%Serial%\PCINFO.txt


 cls
 More %cd%ProductCodes\%Serial%\Code.txt
 ECHO Open Windows Authentication?
 Echo Y/N
 SET /P M=Make Choice then press ENTER:
IF %M%==N GOTO :message
IF %M%==n GOTO :message
IF %M%==y GOTO :Start
IF %M%==Y GOTO :Start

:Start
start "C:\Windows\System32" slui.exe 3
 pause
 
 
 
 :message
 CLS
 ECHO Done!!
 pause
这是我得到的请求输出

制造商型号
HP ZBook 15 G5
名称
英特尔(R)核心(TM)i5-8300H处理器@2.30GHz
总体物理记忆
16977272832

楓敺ㄽ㐲ㄱ㈱㤴㈹ര਍楓敺㈽㘵㔰㤲㘶〴ര਍

看看这个。我做了很多更改,特别是您访问
wmic
输出格式的方式。我还使用了
choice
而不是一堆
if
语句

@echo off
for /f "tokens=2 delims==" %%A in ('wmic systemenclosure get serialnumber /FORMAT:list') do mkdir "%~dp0\ProductCodes\%Serial%" >nul 2>&1
for /f "tokens=2delims==" %%i in ('wmic path softwarelicensingservice get OA3xOriginalProductKey /format:list') do (echo %%i)>"%~dp0\ProductCodes\%Serial%\code.txt"
(wmic computersystem get model,manufacturer
wmic cpu get name
wmic ComputerSystem get TotalPhysicalMemory
wmic diskdrive get size
)> "%~dp0\ProductCodes\%Serial%\PCINFO.txt"

cls
More "ProductCodes\%Serial%\code.txt"
ECHO Open Windows Authentication?
choice /m "Open Authentication?"
if errorlevel 2 goto :message
goto :eof
:Start
start "C:\Windows\System32" slui.exe 3
pause
:message
cls
ECHO Done!!
pause

如果%m%==y语句,则在原始
语句上添加旁注。您可以使用
if/i
使匹配不区分大小写。。换句话说,
if/i“y”==“y”
也将为真,但如果使用
choice

您可以尝试使用命令
More
进行此修改,因为
WMIC
的输出是UNICODE


@echo关闭
@对于/F“跳过=2个令牌=2个delims=,”%%A in(
“wmic systemenclosure获取序列号/格式:csv”
)do(设置“串行=%%A”)
设置“LogFolder=%cd%ProductCodes\%Serial%”
MkDir“%LogFolder%”nul 2>&1
设置“Code=%LogFolder%\Code.txt”
设置“PCINFO=%LogFolder%\PCINFO.txt”
wmic路径软件许可服务获取OA3xOriginalProductKey>%code%
(
wmic计算机系统获取型号,制造商
wmic cpu获取名称
wmic计算机系统获取总体物理存储器
wmic磁盘驱动器列表已满^findstr/B“大小=”
)|更多>%PCINFO%
更多“%Code%”
回显打开Windows身份验证?
回音是/否
设置/P M=进行选择,然后按ENTER键:
如果/I%M%==N转到:消息
如果/I%M%==Y转到:开始
:开始
启动“C:\Windows\System32”slui.exe 3
暂停
:信息
CLS
回音完成!!
暂停

请阅读。您希望它向文件发送什么?您正在附加到指定文件的末尾。你试过先删除它吗?另外,运行cmd.exe的代码页是什么?你用什么来查看文件?是什么让你认为wmic diskdrive list命令写了这个输出?你是如何启动这个脚本的?从控制台窗口,或单击Windows资源管理器中的脚本文件?我正在尝试获取要导出到txt文件的型号、处理器、内存和HD大小。我将在为United Way拍卖的许多计算机上运行此程序,我将保存文本然后打印,并保留原始记录。@jwdonahue不确定您将用户指向“如何提问”教程的原因。这个问题是完全合法的,非常感谢。这正是我需要的。我会从中学到很多。谢谢大家的建议。当我知道怎么做的时候,我会关闭这个帖子。我感谢你的帮助guys@doheth,您无法关闭此线程,但您可以…谢谢您