Batch file 回显到文件而不尾随换行符(批处理)

Batch file 回显到文件而不尾随换行符(批处理),batch-file,line,Batch File,Line,我的生命创造者计划有问题。 它只是简单地选择代表某物的随机数并将其组合在一起。 (我尝试过组合变量) 代码如下: @set num=1 @SET /A a=%RANDOM% * 10 / 32768 + 1 @if %a% == 10 set life%num%= ---- @if %a% == 9 set life%num%=O @if %a% == 8 set life%num%=^ @if %a% == 7 set life%num%=% @if %a% == 6 set life%num

我的生命创造者计划有问题。 它只是简单地选择代表某物的随机数并将其组合在一起。 (我尝试过组合变量) 代码如下:

@set num=1
@SET /A a=%RANDOM% * 10 / 32768 + 1
@if %a% == 10 set life%num%= ----
@if %a% == 9 set life%num%=O
@if %a% == 8 set life%num%=^
@if %a% == 7 set life%num%=%
@if %a% == 6 set life%num%=#
@if %a% == 5 set life%num%=@
@if %a% == 4 set life%num%=)
@if %a% == 3 set life%num%=()
@if %a% == 2 set life%num%=~
@if %a% == 1 set life%num%=OO
@echo %a% >"gencode".txt
@set num=2
@SET /A a=%RANDOM% * 10 / 32768 + 1
@if %a% == 10 set life%num%=----
@if %a% == 9 set life%num%=O
@if %a% == 8 set life%num%=^
@if %a% == 7 set life%num%=%
@if %a% == 6 set life%num%=#
@if %a% == 5 set life%num%=@
@if %a% == 4 set life%num%=)
@if %a% == 3 set life%num%=()
@if %a% == 2 set life%num%=~
@if %a% == 1 set life%num%=OO
@set life3= %life1%-%life2%
@echo %life3%>"lifeform".txt
@echo %a% >>"gencode".txt
这里是可变推杆组合:

@set final= 500
@set /a pass= %pass% + 1
@set /a cnum= %cnum% + 1
@set counterold=%counter%
@set life%cnum%-%counter%= %a%-%b%
@if %pass% == 1 goto start
:repeat
@if %ficnum% == 500 goto final
@set life2%cnum%-%counter%= life%counterold%-life%counter%
@set life2%cnum%-%counterold%= life%counterold%-life%counter%
@set /a ficnum= %ficnum% + 1
@set life3%ficnum%-%counter%= life2%counterold%-life2%counter%
@goto repeat
:final
@set /a final= %final% + 1
@set /a counter= %counter% + 1
@set /a ficnum= %ficnum% + 1
@set counter1= %counter%
@set ficnum1= %ficnum%
:finalst
@set /a final= %final% - 1
@set /a counter1= %counter1% - 1
@set /a ficnum= %ficnum% - 1
@set /a ficnum1= %ficnum1% - 1
@set /a counter= %counter% - 1
@set final%final%=%life3%%ficnum%-%counter%-%life3%%ficnum1%-%counter1%
@if %final% == 0 goto finalend
@goto finalst
:finalend
@echo final0>"lifeform".txt
所以我想知道,(而不是仅仅把每个变量组合成一行,然后重复到一行)我如何设置一行来写,这样我就可以把每个变量写到一行,创造生命形式。 我这样问是因为每次我回显某个内容时,它都会在文本文件中下降一行

这是《生命创造者》的一个实验版本:

@set num1=1
:repeat
@if %counter% == 500 exit
@set  /a num1= %num1% + 1
@SET /A a=%RANDOM% * 10 / 32768 + 1
@if %a% == 10 set life%num%=----
@if %a% == 9 set life%num%=O
@if %a% == 8 set life%num%=^
@if %a% == 7 set life%num%=%
@if %a% == 6 set life%num%=#
@if %a% == 5 set life%num%=@
@if %a% == 4 set life%num%=)
@if %a% == 3 set life%num%=()
@if %a% == 2 set life%num%=~
@if %a% == 1 set life%num%=OO
@echo %a% >>"gencode".txt
@set /a num2= %num% + 1
@SET /A a=%RANDOM% * 10 / 32768 + 1
@if %a% == 10 set life%num%=----
@if %a% == 9 set life%num%=O
@if %a% == 8 set life%num%=^
@if %a% == 7 set life%num%=%
@if %a% == 6 set life%num%=#
@if %a% == 5 set life%num%=@
@if %a% == 4 set life%num%=)
@if %a% == 3 set life%num%=()
@if %a% == 2 set life%num%=~
@if %a% == 1 set life%num%=OO
@set final= 500
@set /a pass= %pass% + 1
@set /a cnum= %cnum% + 1
@set counterold=%counter%
@set life%cnum%-%counter%= %a%-%b%
@if %pass% == 1 goto start
:repeat
@if %ficnum% == 500 goto final
@set life2%cnum%-%counter%= life%counterold%-life%counter%
@set life2%cnum%-%counterold%= life%counterold%-life%counter%
@set /a ficnum= %ficnum% + 1
@set life3%ficnum%-%counter%= life2%counterold%-life2%counter%
@goto repeat
:final
@set /a final= %final% + 1
@set /a counter= %counter% + 1
@set /a ficnum= %ficnum% + 1
@set counter1= %counter%
@set ficnum1= %ficnum%
:finalst
@set /a final= %final% - 1
@set /a counter1= %counter1% - 1
@set /a ficnum= %ficnum% - 1
@set /a ficnum1= %ficnum1% - 1
@set /a counter= %counter% - 1
@set final%final%=%life3%%ficnum%-%counter%-%life3%%ficnum1%-%counter1%
@if %final% == 0 goto finalend
@goto finalst
:finalend
@echo final0>"lifeform".txt
更新:如问题标题所示,要将问题输出到文件,无需特别考虑(使用通常的输出重定向),这最终会使此问题成为问题的副本。

如果我理解正确,您正在寻找一种方法来回送(打印到标准输出)一个没有尾随换行符的字符串。

cmd.exe
echo
不允许您这样做,但有一个解决方法:

设置“var=world”
更新:如问题标题所示,要将问题输出到文件,无需特别考虑(使用通常的输出重定向),这最终会使此问题成为问题的副本。

如果我理解正确,您正在寻找一种方法来回送(打印到标准输出)一个没有尾随换行符的字符串。

cmd.exe
echo
不允许您这样做,但有一个解决方法:

设置“var=world”
更新:如问题标题所示,要将问题输出到文件,无需特别考虑(使用通常的输出重定向),这最终会使此问题成为问题的副本。

如果我理解正确,您正在寻找一种方法来回送(打印到标准输出)一个没有尾随换行符的字符串。

cmd.exe
echo
不允许您这样做,但有一个解决方法:

设置“var=world”
更新:如问题标题所示,要将问题输出到文件,无需特别考虑(使用通常的输出重定向),这最终会使此问题成为问题的副本。

如果我理解正确,您正在寻找一种方法来回送(打印到标准输出)一个没有尾随换行符的字符串。

cmd.exe
echo
不允许您这样做,但有一个解决方法:

设置“var=world”


您知道
set var=
=
后面的空格进入变量吗?要调试正在发生的事情,请删除所有
@
并查看输出。@wOxxOm:一般来说,是的,但这不适用于
set/a
-任何空格都会从计算结果中删除;类似地,如果使用数值比较运算符(如
eq
),则会忽略空格。如果不想回显任何脚本行,只需使用
@echo off
作为第一行,则不必在每行前面加上
@
@mklement0,我专门编写了
set var=
,不
set/a var=
。不清楚你在问什么-你的问题中有很多“噪音”。你能把它归结为一个吗?你知道在
set var=
=
后面的空格进入变量吗?要调试正在发生的事情,请删除所有
@
并查看输出。@wOxxOm:一般来说,是的,但这不适用于
set/a
-任何空格都会从计算结果中删除;类似地,如果使用数值比较运算符(如
eq
),则会忽略空格。如果不想回显任何脚本行,只需使用
@echo off
作为第一行,则不必在每行前面加上
@
@mklement0,我专门编写了
set var=
,不
set/a var=
。不清楚你在问什么-你的问题中有很多“噪音”。你能把它归结为一个吗?你知道在
set var=
=
后面的空格进入变量吗?要调试正在发生的事情,请删除所有
@
并查看输出。@wOxxOm:一般来说,是的,但这不适用于
set/a
-任何空格都会从计算结果中删除;类似地,如果使用数值比较运算符(如
eq
),则会忽略空格。如果不想回显任何脚本行,只需使用
@echo off
作为第一行,则不必在每行前面加上
@
@mklement0,我专门编写了
set var=
,不
set/a var=
。不清楚你在问什么-你的问题中有很多“噪音”。你能把它归结为一个吗?你知道在
set var=
=
后面的空格进入变量吗?要调试正在发生的事情,请删除所有
@
并查看输出。@wOxxOm:一般来说,是的,但这不适用于
set/a
-任何空格都会从计算结果中删除;类似地,如果使用数值比较运算符(如
eq
),则会忽略空格。如果不想回显任何脚本行,只需使用
@echo off
作为第一行,则不必在每行前面加上
@
@mklement0,我专门编写了
set var=
,不
set/a var=
。不清楚你在问什么-你的问题中有很多“噪音”。你能把这归结为一个问题吗?谢谢!很多,你能解释一下它是怎么工作的吗?还有,它能在循环中工作吗?对不起,我只是试过,对不起,我想用它写一个文件…@beasprogrammer:那应该没问题-只要确保你永远不要使用
echo
-对所有输出使用
>文件
Hello, world: Still on the same line. Still on the same line, but ending it now.