Batch file 如何批量处理一个变量中的多个和

Batch file 如何批量处理一个变量中的多个和,batch-file,matrix,Batch File,Matrix,我正在尝试创建一个矩阵(下面这个可以工作),但速度很慢,因为它必须循环每个数字。所以我想知道你是否可以在不打印“(随机数)%2”的情况下打印多个%random%%%2 @echo关闭 颜色0a :a 设置/a mat=%random%%%2 回声|设置/p=%mat% 转到a我发现这要快得多: @echo off if not "%1" == "max" start /MAX cmd /c %0 max & exit/b color 0a setlocal EnableDelayedEx

我正在尝试创建一个矩阵(下面这个可以工作),但速度很慢,因为它必须循环每个数字。所以我想知道你是否可以在不打印“(随机数)%2”的情况下打印多个%random%%%2

@echo关闭
颜色0a
:a
设置/a mat=%random%%%2
回声|设置/p=%mat%

转到a

我发现这要快得多:

@echo off
if not "%1" == "max" start /MAX cmd /c %0 max & exit/b
color 0a
setlocal EnableDelayedExpansion
:a
set "addition="
for /L %%i in (1,1,256) do (
set /a mat=!random! %% 2
set addition=!addition!!mat!
)
echo |set /p=%addition%
goto a
编辑:我现在看到评论中@Stephan links的答案非常相似,所以他的功劳也归他所有

编辑#2:

你可能也会喜欢这部电影,它有各种各样的角色,所以看起来有点“母性”


为获得额外效果,请在CHARS变量中添加6个空格。请注意,我还添加了一行以全屏模式启动它。

我发现这要快得多:

@echo off
if not "%1" == "max" start /MAX cmd /c %0 max & exit/b
color 0a
setlocal EnableDelayedExpansion
:a
set "addition="
for /L %%i in (1,1,256) do (
set /a mat=!random! %% 2
set addition=!addition!!mat!
)
echo |set /p=%addition%
goto a
编辑:我现在看到评论中@Stephan links的答案非常相似,所以他的功劳也归他所有

编辑#2:

你可能也会喜欢这部电影,它有各种各样的角色,所以看起来有点“母性”


为获得额外效果,请在CHARS变量中添加6个空格。请注意,我还添加了一行以全屏模式启动它。

以下方法是解决此问题的最快方法:

@echo off
setlocal EnableDelayedExpansion

rem Prepare the output for one line
set "bin=0101010101"
set "line="
for /L %%i in (1,1,79) do (
   set "line=!line!%%bin:~^!random:~-1^!,1%%"
)

for /L %%i in () do call echo %line%

以下方法是解决此问题的最快方法:

@echo off
setlocal EnableDelayedExpansion

rem Prepare the output for one line
set "bin=0101010101"
set "line="
for /L %%i in (1,1,79) do (
   set "line=!line!%%bin:~^!random:~-1^!,1%%"
)

for /L %%i in () do call echo %line%

(我在这个网站上的第一个答案之一)@Dennis van Gils在写入文本文件时大约快了12%(我在这个网站上的第一个答案之一)@Dennis van Gils在写入文本文件时大约快了12%,但这使用了echo和硬编码宽度。如果你的终端的宽度改变了,这看起来就不好看了…但是这使用了回声和硬编码的宽度。如果你的终端的宽度改变了,这将不再好看。。。