大家好我正在编写这个脚本来查找计算机的产品ID,如果是真的,它会说你被禁止了......
wmic os get "SerialNumber"|find /v "SerialNumber" >>%IDcheckfile% | findstr /i "****-OEM-*********-*****"
cls
IF %ERRORLEVEL% EQU 0 (
for /f "tokens=3" %%i in ('"SerialNumber"') do set "productID=%%i"
goto STARTLOG )
IF %ERRORLEVEL% EQU 1 (echo You are banned from this program )
pause
exit
现在这很棒,但我需要从文本文件中复制ID,我正在努力做到这一点。如果我甚至需要将ID保存到文本文件,请告诉我。为什么我需要提取ID并将其改为varible,因为它需要在程序日志中显示ID。非常感谢您迄今为止的出色帮助:)并感谢您的支持!
答案 0 :(得分:0)
试试这个:
@echo off &setlocal
for /f "tokens=2*" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductID^|find "REG_SZ"') do set "ProductID=%%j"
if defined ProductID (echo.ProductID: %ProductID%) else echo You are banned!
endlocal
答案 1 :(得分:0)
@ECHO off
FOR /f "delims=" %%i IN ('wmic os get SerialNumber^|find "-"') DO SET productid=%%i
ECHO %productid%|FIND "-OEM-" >NUL
IF NOT ERRORLEVEL 1 ECHO OEM version - banned&GOTO end
ECHO productid=%productid%
:startlog
:end
pause
FOR / f逐行读取括号中指定的文件
output
。只需将命令括在single quotes
管道中,其他特殊字符需要由插入符号(^
)进行转义
然后将文本行读取分成TOKENS
。每个令牌由er DELIMITERS
space
,comma
,semicolon
,tab
,但可以通过列出这些字符之间的字符来改变为“任意”的一组字符。 =
子句的"
和"delims=abc"
(将a
,b
,c
设置为分隔符。metavariable
(即上面的循环控制字母 - i
例子)tokens=
子句并列出令牌编号(以逗号分隔),可以分配其他令牌。编号最小的标记分配给metavariable
,下一个最低编号分配给后续元变量,依此类推 - 所以"tokens=1,3delims=-
会将标记1和3从行分配给%%i
如果 FOR 元变量为%%j
,则分别为i
。*
表示“指定最后一个标记后的其余部分”基本上就是这样。此外,您还可以应用大量额外设施 - 例如,文件名压缩为驱动器,路径,名称,扩展名或大小,日期时间,属性等。所有内容都记录在易于阅读的FOR /?
中,来自提示符......