Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批量生成一个随机字符串_Batch File_Random - Fatal编程技术网

Batch file 批量生成一个随机字符串

Batch file 批量生成一个随机字符串,batch-file,random,Batch File,Random,我试图批量生成一个随机字符串,但我不知道该怎么做。我用%random%函数调用了一个随机数字字符串,但我不知道如何永久替换变量中的某些字符: @echo off set subkey1=%random%%random%%random%%random%%random%%random% set subkey2=%random%%random%%random%%random%%random%%random% set subkey3=%random%%random%%random%%random%%ra

我试图批量生成一个随机字符串,但我不知道该怎么做。我用%random%函数调用了一个随机数字字符串,但我不知道如何永久替换变量中的某些字符:

@echo off
set subkey1=%random%%random%%random%%random%%random%%random%
set subkey2=%random%%random%%random%%random%%random%%random%
set subkey3=%random%%random%%random%%random%%random%%random%


ECHO %subkey1:0=a%
ECHO %subkey1:1=b%
ECHO %subkey1:2=c%
ECHO %subkey1:3=d%
ECHO %subkey1:4=e%
ECHO %subkey1:5=f%
ECHO %subkey1:6=g%
ECHO %subkey1:7=h%
ECHO %subkey1:8=i%
ECHO %subkey1:9=j%

ECHO %subkey2:0=k%
ECHO %subkey2:1=l%
ECHO %subkey2:2=m%
ECHO %subkey2:3=n%
ECHO %subkey2:4=o%
ECHO %subkey2:5=p%
ECHO %subkey2:6=q%
ECHO %subkey2:7=r%
ECHO %subkey2:8=s%
ECHO %subkey2:9=t%

ECHO %subkey3:0=u%
ECHO %subkey3:1=v%
ECHO %subkey3:2=w%
ECHO %subkey3:3=x%
ECHO %subkey3:4=y%
ECHO %subkey3:5=z%
REM after going through all the letters, we just pick random ones
ECHO %subkey3:6=a%
ECHO %subkey3:7=g%
ECHO %subkey3:8=k%
ECHO %subkey3:9=o%

set key=%subkey1%%subkey2%%subkey3%
echo String: %key%
pause

如您所见,我可以回显不同的键,但我想将新键保存到变量中(例如,在子键1中,我想将所有0替换为a,然后保存,这样如果我以后查看我的变量,我可以看到新键,并能够在不同的函数中调用它。

要为变量赋值,请使用SET命令:

SET subkey1=%random%%random%%random%%random%%random%%random%

SET subkey1=%subkey1:0=a%
SET subkey1=%subkey1:1=b%
SET subkey1=%subkey1:2=c%
.
.
.
ECHO %subkey1%

当然,要注意,
%random%
永远不应该被用作加密目的的源代码。

同样的效果,代码更少:

@echo off
setlocal enabledelayedexpansion
set "string=abcdefghijklmnopqrstuvwxyz"
set "result="
for /L %%i in (1,1,30) do call :add
echo %result%
goto :eof

:add
set /a x=%random% %% 26 
set result=%result%!string:~%x%,1!
goto :eof

谢谢你,这很好用,IDK我怎么没想到。谢谢你的帮助制作“countRaw”:如何生成随机字符串,lowValue生成多长字符串请解释解决方案,而不仅仅是发布代码。
@echo off
setlocal EnableDelayedExpansion
set charSets=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*
set count=0

set /a countRaw=4+(%random%)%%20

for /L %%c in (1,1,%countRaw%) do (call :MAKERANDOMSTRING)
goto ENDRANDOMSTRING;

:MAKERANDOMSTRING
set buffer=% %
set count=0
set /a lowValue=30+(%random%)%%40
set /a length=10+!lowValue!

:Loop
set /a count+=1
set /a rand=%Random%%%69
set buffer=!buffer!!charSets:~%rand%,1!
if !count! leq !length! goto Loop

echo "%buffer%"
:ENDRANDOMSTRING