如何写一个字符"x"次

How to write a character "x" number of times

我正在尝试创建一个使用用户输入来创建以下内容的批处理文件..

  1. 要创建多少条记录
  2. 要将文本文件另存为的文件名
  3. 使用什么字符
  4. 选项3中的字符重复多少次

我是批量制作的自学新手,但我确实了解一些.... 以下是我所拥有的,我知道它不正确,也许只是倒退......我可能需要设置要写的内容,在文本的一行上重复多少次,然后重复步骤的数量记录在一个文件中。 最终结果将如下所示:

0000000000  0000  000000000
0000000000  0000  000000000

等用户输入的总记录量... %column1bytecount% %column2bytecount% %column3bytecount% 重复这个 %howmanyrecords%

以下无效。 (我必须接近)

@Echo Off

Set /P howmanyrecords=How Many Records Would You Like To Produce: 
set /P savefilename=Please Type Name Of Sample Pin File To Save: 
Set /P charactertowrite=What Character Would You Like To Use (typically 0 is used): 
Set /P Column1bytecount=How Many Bytes In Column 1: 


for /L %%A in (1,1,%howmanyrecords%) do (
echo 0000000000  0000  00000000 >> %savefilename%

)

我认为这可以满足您的需求。

@Echo Off
setlocal enabledelayedexpansion

Set /P "howmanyrecords=How Many Records Would You Like To Produce: "
Set /P "savefilename=Please Type Name Of Sample Pin File To Save: "
Set /P "charactertowrite=What Character Would You Like To Use (typically 0 is used): "
Set /P "column1bytecount=How Many Bytes In Column 1: "

for /l %%i in (1,1,%howmanyrecords%) do (
    set line=
    for /l %%j in (1,1,%column1bytecount%) do (
        set line=!line!!charactertowrite!
    )

    echo !line!>> !savefilename!
)
@ECHO OFF
SETLOCAL

Set /P howmanyrecords=How Many Records Would You Like To Produce: 
set /P savefilename=Please Type Name Of Sample Pin File To Save: 
Set /P charactertowrite=What Character Would You Like To Use (typically 0 is used): 
Set /P Columnbytecount=How Many Bytes In Columns (separate by commas) : 

SET "line="
CALL :setline %columnbytecount%

for /l %%i in (1,1,%howmanyrecords%) do (
 >>%savefilename% echo %line%
)

GOTO :EOF

:setline
SET "thiscolumn=%1"
IF NOT DEFINED thiscolumn SET "line=%line:~0,-2%"&GOTO :EOF 
:buildloop
SET "line=%line%%charactertowrite%"
SET /a thiscolumn-=1
IF %thiscolumn% neq 0 GOTO buildloop
:: add separator - 2 spaces (not specified)
SET "line=%line%  "
SHIFT
GOTO setline

这应该可以完成工作。

我稍微更改了规范。您可以将列作为一系列数字输入,以逗号(或空格)分隔。例如,您将输入 10,4,9

该过程在 line 中构建输出行,然后将该行写入所需的次数。请注意,您不能在块语句(带括号的一系列语句)中放置标签

setline 子例程接受指定为 columnbytecount 的参数列表。它将第一个参数放入 thiscolumn 并将指定的字符添加到 line 那个次数。当计数达到零时,它添加两个空格(你不指定间距是什么,但它看起来像两个空格)和 shifts 参数列表,以便原来的第二个参数成为第一个。

重复该操作直到参数列表用完,然后删除最后两个字符(因为在最后一列完成时添加了两个空格)通过到达文件结尾结束退出子例程。

子字符串语法为

%var:~start,length% if start >=0 and length >0
%var:~start,endpos% if start >=0 and endpos <0
%var:~start,length% if start <0 and length >0
%var:~start,endpos% if start <0 and endpos <0
  • length/endpos 可以省略。如果省略,则子串为 "from the start position to the end"
  • % 对于 delayedexpansion 模式
  • 可能是 !