如何写一个字符"x"次
How to write a character "x" number of times
我正在尝试创建一个使用用户输入来创建以下内容的批处理文件..
- 要创建多少条记录
- 要将文本文件另存为的文件名
- 使用什么字符
- 选项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
模式 可能是 !
我正在尝试创建一个使用用户输入来创建以下内容的批处理文件..
- 要创建多少条记录
- 要将文本文件另存为的文件名
- 使用什么字符
- 选项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
模式 可能是
!