Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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
Windows 使用批处理操作字符串_Windows_Batch File - Fatal编程技术网

Windows 使用批处理操作字符串

Windows 使用批处理操作字符串,windows,batch-file,Windows,Batch File,我有一个名为“code”的字符串和一个名为“lenght”的int,它是“code”的长度 还有int“todo”,其值为0、1或2 0应删除位置“lenght”处的字符 1应将“lenght”位置的字符更改为随机字符 2应在“长度”位置添加随机字符 如何存档此目标 SET code="%*f0" set length=0 :loop0 if defined # ( set #=%#:~1% set /A length += 1 goto loop0 ) SET /A

我有一个名为“code”的字符串和一个名为“lenght”的int,它是“code”的长度 还有int“todo”,其值为0、1或2

0应删除位置“lenght”处的字符

1应将“lenght”位置的字符更改为随机字符

2应在“长度”位置添加随机字符

如何存档此目标

SET code="%*f0"
set length=0

:loop0
if defined # (
    set #=%#:~1%
    set /A length += 1
    goto loop0
)

SET /A location=%RANDOM% * %lenght% / 32768 + 1
SET /A todo=%RANDOM% * 2 / 32768 + 1

IF %todo% == 0(

)
IF %todo% == 1(

)
IF %todo% == 2(

)

如果正确理解您,则:

@echo off
  setlocal enabledelayedexpansion
    set "str=%~f0"
    set "len=0"
    set "buf=%str%"

    :loop
    if defined buf (set buf=%buf:~1%& set /a "len+=1" & goto:loop)

    echo Delete char at %%len%% position^:
    set /a "len-=1"
    echo !str:~0,%len%!
    echo.
    echo Change char at %%len%% position for random^:
    rem set chars string
    set "map=abcdefghijklmnopqrstuvwxyz"
    rem convert it to array
    set "i=0"
    for /l %%i in (0, 1, 25) do (
      for /l %%j in (1, 1, 1) do (
        set "arr.!i!=!map:~%%i,%%j!" & set /a "i+=1"
      )
    )
    rem random set 0..25
    set /a "rnd=0+25*%random%/32768"
    echo !str:~0,%len%!!arr.%rnd%!
  endlocal
exit /b

有趣的问题。批量生成随机字符不是那么容易,需要一点时间来回答。提示:您是否错拼了
%lenght%
,并在循环
length
中正确拼写,因此它们是不同的变量。