已迁移平台:segmentfault,搜索 erma0
换平台了,简书发什么都锁定,广告一堆,趁早倒闭吧。
试用某软件时发现,直接修改注册注册表就变成了新用户,手动太麻烦,所以学一学批处理。
目标功能
- 一键修改注册表
- 一键重启EXE
- 修改内容为指定长度指定范围内随机字符串
源码
:: 关闭回显
@echo off
:: 开启变量延迟,这里是为了在变量中引用变量即!%str%!
setlocal enabledelayedexpansion
::配置目标字符串长度及取值范围
set len=76
set allstr=ABCDEF0123456789
:: 取字库长度(自己数了填下面也可以,这里纯粹是为了涨姿势)
set num=0
set str=%allstr%
:label
set /a num+=1
set str=%str:~0,-1%
if defined str goto :label
echo 字符串长度:%num%
:: 循环len次调用generate方法,每次返回一个随机字符
for /l %%a in (1,1,%len%) do @call :generate "%%a"
:: 生成目标字符串后输出
echo %random_str%
:: 修改注册表,省略/t REG_SZ,因为默认就是字符串(REG_SZ)
reg add HKEY_CURRENT_USER\SOFTWARE\ant /v Id /d %random_str% /f
:: 重启EXE
taskkill /f /t /im ant.exe
start D:\ant_1.3.4\ant_1.3.4\ant.exe
:: 运行结束,不让窗口关闭
pause
::取随机字符串并拼接方法
:generate
if "%~1"=="" goto:eof
set /a r=%random%%%%num%
set random_str=%random_str%!allstr:~%r%,1!