如果是这样怎么样?
是的,批处理文件是蹩脚的,但是我不能使用powershell,我不想写一个真正的应用程序来完成这个简单的任务....
修改
我想要的是
中的某些东西set var="this is a
multi
line
string "
答案 0 :(得分:21)
或者你可以创建一个“真正的”换行符。
setlocal enableDelayedExpansion
set NL=^
rem two empty line required
echo first line !NL! second line
set multi=Line1!NL!Line2
set multi=!multi!!NL!Line3
echo !Multi!
使用此变体,换行符是字符串中的“普通”字符,因此变量正常运行,您可以将它们分配给另一个变量,这对于&echo.
技巧是不可能的(这对于简单有用)任务)。
答案 1 :(得分:14)
可以吗?
@echo off
set var=kur
set var2=kur2
echo var is = "%var%" and var2 is = %var2%
修改强>
这就是你的意思吗?
@echo off
set nl=^& echo.
echo this%nl%is%nl%multiline%nl%string
答案 2 :(得分:3)
SET myFlags= ^
a ^
b ^
c
答案 3 :(得分:1)
现在 - 没有辅助SET命令:
echo this is a & echo multi & echo line & echo string
答案 4 :(得分:1)
这是一个非常古老的问题,但我整合了@Fabricio和@jeb的解决方案,它们都正常工作并增加了一些可读性:
setlocal enableDelayedExpansion
set NL=^
rem two empty line required
set var=this is a !NL! ^
multi !NL! ^
line !NL! ^
string !NL!
echo !var!
答案 5 :(得分:0)
如果你只是想用它来输出变量行,我希望这对你有用。
受某些事物的启发,我觉得这很有效。
对于正常命令提示符中的代码:
set this=echo hi ^& echo bye
%this%
它给出了以下两行:
hi
bye
在命令提示符窗口中。
使用^
字符的原因:
命令提示符会识别您要运行两个命令,以便您需要添加此字符,告诉命令提示符将下一个字符识别为符号,而不是为它做任何特殊操作。
答案 6 :(得分:0)
如果你想构建一些东西,而不仅仅是输出,希望这对你也有用。
首先,你应该制作一个文件。例如.txt
。我将以var.txt
为例。
其次,输入多行变量。
第三,这是代码,但仅适用于批处理:
@echo off set num=0 set /p this%num%=<"var.txt" goto there :there set /a num=num+1 for /f "skip=%num%" %%a in (var.txt) do (set this%num% =%%a goto there) set num=0 goto build :build rem Example of using multi-lines of variable. call echo %%this%num% %% set /a num=num+1 for /f "skip=%num% delims=" %%a in (var.txt) do (call echo %%this%num% %% goto build) rem Just replace the commands with `echo` part into something else which suits your situation. pause >nul exit
我承认严格来说,这不是多线的变量,但在我看来,这比没有好。
您可能会问为什么不使用setlocal EnableDelayedExpansion
命令。原因很简单,该命令对我有用(IDK为什么)。因此,我想并使这些代码产生同样的效果。
答案 7 :(得分:0)
我更喜欢这种方法
@ECHO OFF
SETLOCAL EnableDelayedExpansion
REM (define NewLine character)
(SET _NL=^
%=this line is empty=%
)
答案 8 :(得分:0)
我想我明白了。将^
放入字符串时,我必须将%NL%
添加到%NL%
变量中,否则它将在第一个set NL=^& echo
set str=text on line 1 ^%NL% text on line 2
echo %str%
text on line 1
text on line 2
之后隐藏文本,因为它是在设置时执行的,而不是在被回显时执行的以后
#include <stdio.h>
void maxVectorSwap( int *v, size_t dim )
{
size_t max_i = 0;
for ( size_t i = 1; i < dim; i++ )
{
if ( v[max_i] < v[i] ) max_i = i;
}
if ( max_i != 0 )
{
int tmp = v[0];
v[0] = v[max_i];
v[max_i] = tmp;
}
}
int main(void)
{
int a[] = { 3, 5, 1, 7, 2 };
size_t n = sizeof( a ) / sizeof( *a );
for ( size_t i = 0; i < n; i++ ) printf( "%d ", a[i] );
putchar( '\n' );
maxVectorSwap( a, n );
for ( size_t i = 0; i < n; i++ ) printf( "%d ", a[i] );
putchar( '\n' );
return 0;
}