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

[文本处理] 求:怎么给bat设置一个使用权限,见内容

我写了一个程序

想给他添加一个使用权限:
随机添加5个数字。
然后使用者把数字反馈给我
我给出使用权限数字
他输入后既可以使用,然后每次打开都不需要再输入权限数字

能明白吗。。。。。?

例如:
@echo off
set S1=12345(这是随机的数字,正确写法↓)
::set num=%random:~0,3%%random:~0,2%
echo 请反馈给管理员获取使用权限:%S1%
set /p S2=请输入授权码:

就这样的。。。。设置一个权限

下次打开自己就可以运行,不再需要输入权限数字,输入过权限数字的就可以直接运行了
本白不明白,故请教之              谢谢!

可以考虑把授权信息写入注册表,启动bat后先读注册表的授权信息,有则直接运行,无则要求输入注册码

TOP

@echo off
call :check 2>nul
if defined key goto main
:pwd
cls
set /p input= 输入授权码
if not defined input goto pwd
if not "%input%"=="shouquanma" goto pwd
(echo;
echo;:check
echo;set key=123
echo;goto :eof
echo;
)>>%0
:main
echo;hello word
echo.&pause&exit

这个我编译出exe 然后打开输入shouquanma 出现了hello world ,再次打开怎么还需要输入?

没办法做到首次要输入,然后就不用输入了 ? 无论哪台机子,第一次都要输入,然后就不用输入了

TOP

回复 21# taofan712


    自己试过了。。。没弄出来来,可否给个小示例

TOP

用mac地址替换ip地址。
你用ipconfig /all 可以获取到。

TOP

一个有关授权码的跳转,见内容

本帖最后由 渣白 于 2017-4-3 10:05 编辑

@echo off
for /f "tokens=2 delims=:" %%i in ('ipconfig^|findstr "IPv4"') do set ip=%%i
call :check 2>nul
if defined yip goto main
set /p input= 输入授权码:
if not defined input echo 输入错误!请重新输入!&&goto pwd
if not "%input%"=="%shouquanma%" echo 输入错误!请重新输入!&&goto pwd
(echo;
echo;:check
echo;set "yip=%ip%"
echo;
)>>%0
:main
echo hell world
echo.&pause&exit

先说一下要解决的问题↓↓↓↓↓↓↓↓↓↓↓
输入了授权码 显示了 hell world,想利用ip来确定是否在该机器上授权

%shouquanma%我利用了算法就不献丑了
if defined yip goto main 这一行改成了 if %yip%=%ip% goto main 就会闪退了

TOP

回复 18# ShowCode

谢谢谢谢谢谢了兄弟
   我cmd 输入 del /? 哪里看到了



现在这个不是很懂↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
======================================================
我想用set /p "a=请输入48位数字:"



变量规定为 48位数字纯数字,无英文字母,无其他字符(空格,符号等)
纯数字无要求,可以0开头也可以重复,所以不用做任何规定

:loop
set /p "a=请输入48位数字:
set "a48=a:~48,1"
if %a48% neq ”“ echo 输入错误! goto loop
echo %a% | finldstr /i "A B C D E F G H I J K L N M O P Q R S T U V W X Y Z  , . * / - + ! @ $ % ^ & * ( ) : " < > ? " echo 输入错误! &&goto loop
echo 输入成功!
pause >nul&&exit

这是我自己的想法
if %a48% neq ”“ echo 输入错误! goto loop  这一步错了。。。然后就没想懂
1

评分人数

TOP

回复 17# 渣白


cscript slmgr.vbs /dti>step2.txt
cscript slmgr.vbs /ato>>step2.txt
cscript slmgr.vbs /xpr>>step2.txt
start step2.txt
pause
del /f /q step2.txt

TOP

本帖最后由 渣白 于 2017-4-2 18:02 编辑

回复 16# ShowCode


    我试试。可以。但是我关闭批处理了那个txt没被删除,怎么弄 关闭了批处理并且删除弹出的txt

也就是txt生成的是临时文件

TOP

回复 14# 渣白


cscript slmgr.vbs /dti>step2.txt
cscript slmgr.vbs /ato>>step2.txt
cscript slmgr.vbs /xpr>>step2.txt
start step2.txt

这样可以吗?

TOP

回复 12# taofan712


    我编出来了,但是还有一个问题就是
我自己输入了授权码,然后把软件发送给别人,别人也授权了,
怎么让他识别,
加一个电脑IP吗?

TOP

回复 12# taofan712

还有一个小问题。没想通
这个是弹出到记事本的
    cscript slmgr.vbs /dti>step2.txt&&start step2.txt

三个或三个以上的怎么弹
cscript slmgr.vbs /dti
cscript slmgr.vbs /ato
cscript slmgr.vbs /xpr

我用过  &&  链接符号 但是只有最后一个弹出来了

所以不明白

TOP

回复 12# taofan712


    好的,我自学不久。。所以代码什么的还不会优化,谢谢谢谢

TOP

回复 10# 渣白


    if not "%input%"=="%key%" goto pwd
    if not "%input%"=="%shouquanma%" goto pwd
都可以,如果出错了,那应该是你中间的算法有问题。
——————————————————————————————————
     你这个脚本都这么久了,结果是用的各种if和set加起来300多行。建议多看看论坛的帖子,我估计,应该在80行左右可以完成你的任务。
赋值那一段,参考新手练功区http://www.bathome.net/thread-458-1-1.html
循环截取判断,参考新手练功区http://www.bathome.net/thread-2564-1-1.html
加密解密算法,可以参考batman的http://www.bathome.net/thread-1278-1-1.html
几位大神的一些讨论 http://www.bathome.net/viewthread.php?tid=15628
另外,if 的参数i也是很好用的。

TOP

本帖最后由 pcl_test 于 2017-4-2 08:47 编辑

回复 5# taofan712


当输入正确号码后,添加一点记号到本bat,下次启动时检查这个记号
低端方法有很多,授权码输入正确之后,可以生成一个临时文件到某个目录,或者重定向一段代码到%0.再次打开批处理时候,判断一下就可以。

@echo off
call :check 2>nul
if defined key goto main
:pwd
cls
set /p input= 输入授权码
if not defined input goto pwd
if not "%input%"=="shouquanma" goto pwd
(echo;
echo;:check
echo;set key=123
echo;goto :eof
echo;
)>>%0
:main
echo;hello word
echo.&pause&exit

if not "%input%"=="shouquanma" goto pwd
这一行的shouquanma怎么改为变量

TOP

返回列表