批处理时,您可以将一些文本打印到这样的文件中:
echo Foo Bar> test.txt
你可以打印一个这样的文本块:
> test.txt (
echo Foo Bar
echo Bar Foo
)
那么,是否有很好的,非常好的方法来打印一个文本块而不用在每一行上使用echo?类似的东西:
echo> test.txt (
Foo Bar
Bar Foo
)
注意:问题不在于我无法 echo
...这是我不想要它 - 这一点的目的是使代码更容易阅读,更好看,写。
答案 0 :(得分:1)
像这样,也许?
>u:\file.txt (FOR %%a IN ("line 1" "line 2" "line3") do echo %%~a)
由rojo编辑:应该注意的是,每个引用的参数都可以放在自己的行上,以进一步提高代码的可读性。
@echo off
setlocal
>out.txt (
for %%I in (
"the quick brown"
"fox jumps over"
"the lazy dog"
) do echo %%~I
)
type out.txt
答案 1 :(得分:0)
您可以只使用一个echo
命令显示多行:
@echo off
setlocal EnableDelayedExpansion
set NL=^
%Don't remove%
%these lines%
(
echo ^
Line one!NL!^
Line two!NL!^
Line three
) > test.txt
编辑:在评论中阅读此附加规范后:
这是一大堆更多批次代码,可能是50行...... 我可能希望稍后编辑此代码,因此易于阅读是必要的。 我不希望在一行中包含所有50行,因为这是为了清晰而不是功能。
我想我终于理解了这个请求,即:"如何在批处理文件中嵌入文本行,并将它们提取到另一个文件?"。这是我用于同一目的的方法:
@echo off
rem Use :GetResource subroutine to extract text placed in this file; for example:
call :GetResource example.bat
call :GetResource example.txt
rem Execute the just extracted Batch file
call example.bat
goto :EOF
A couple examples of embedded files
<resource id="example.bat">
@echo off
echo Hello, I am example.bat
type example.txt
</resource>
<resource id="example.txt">
An example of data file
</resource>
rem Extract text from lines placed in a "resource" in this .bat file
:getResource resourceId
setlocal EnableDelayedExpansion
rem Resource data start format: <resource id="resourceId">
set start=
set lines=
for /F "tokens=1,3 delims=:=>" %%a in ('findstr /N "^</*resource" "%~F0"') do (
if not defined start (
if "%1" equ "%%~b" set start=%%a
) else (
if not defined lines set /A lines=%%a-start-1
)
)
set line=0
(for /F "skip=%start% tokens=1* delims=]" %%a in ('find /N /V "" ^< "%~F0"') do (
setlocal DisableDelayedExpansion
echo(%%b
endlocal
set /A line+=1
if !line! equ %lines% exit /B
)) > "%~1"
exit /B
答案 2 :(得分:0)
我写了PrintHere.bat utility,我认为这正是你要找的:-)
请点击链接获取代码,并了解其工作原理。
以下是如何将它用于您的示例:
call PrintHere /- " " :text >test.txt
Foo Bar
Bar Foo
:text
我添加了/- " "
以从输出中去除前导空格。如果没有该选项,您将使用以下内容获得相同的结果:
call PrintHere :text >test.txt
Foo Bar
Bar Foo
:text
答案 3 :(得分:0)
嗯,这很老了,并且有一些有趣的答案。让我们看看这个是否也证明对搜索者有用。如果你的文本是一个固定的文本块,比如你要插入程序的一些代码,那么你可以将它放在自己的文件中,然后输入&#34;键入&#34;它
myblock.txt:
Hello world
isn't this nice?
然后您可以使用简单类型命令
插入这两行@echo off
type myblock.txt >> target_file.sql.
我现在正在使用oracle&#34;部署脚本构建器&#34;来实现这一点,它将我们在Subversion中拥有的内容并将其很好地打包到基于模式的脚本中。如果要将文本附加到现有文件,请不要忘记使用">>"
。