我正在尝试创建一个使用用户输入来创建以下文件的批处理文件。
我是批量生产方面的自学新手,但我确实了解一些....以下是我所拥有的,我知道这是不正确的,也许只是倒退...我可能需要设置要写的内容,方法在文本的一行上重复多次,然后针对文件中的记录数量重复步骤。最终结果将类似于以下内容:
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
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
,然后将其写入所需的次数。请注意,您不能在block语句(带括号的一系列语句)中放置标签
该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
%
可能是!
用于delayedexpansion
模式本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句