如何在 cmd 中的文件中保留要一次性输出的文本?
How do I preserve text to output all at once in a file in cmd?
我想知道是否有保留文本格式(如空格、换行符)的功能,因为我正在创建一个 .bat
文件并相应地创建另一个 .bat
文件。
现在,如果我想输出文本以创建第二个 .bat
文件,我将一次回显 1 行。
@ECHO OFF
SET file=output.bat
ECHO @ECHO OFF > %file%
ECHO ECHO HELLO >> %file%
ECHO PAUSE >> %file%
Pause
上面的方法实在是太低效了,想一次性全部输出
那么我可以这样输出文字吗?
ECHO "@ECHO OFF
ECHO HELLO
PAUSE">%file%
谢谢!
您可以一次重定向一段代码
@ECHO OFF
SET file=output.bat
(
ECHO @ECHO OFF
ECHO ECHO HELLO
ECHO PAUSE
) > %file%
另一种方法是使用多行字符^
,但是你还需要在每个文本行之后有一个空行
@ECHO OFF
SET "file=output.bat"
(
ECHO @ECHO OFF^
ECHO HELLO^
PAUSE
) > "%file%"
Jebs 解决方案的替代方案是使用前缀字符串和带有 findstr
的 for /f
循环来读取要输出到辅助文件的文本。
@ECHO OFF & CD /d "%~dp0"
(
For /f "tokens=1,* Delims=#" %%G in ('%__APPDIR__%findstr.exe /bl ":-#" "%~f0"')Do Echo(%%H
)>"outfile.bat"
outfile.bat
:-#@ECHO OFF
:-#ECHO HELLO
:-#PAUSE
备注:
- 要输出的文本中不能出现 Delim 字符。
#
被使用是因为它在批处理语法中没有意义
- 前缀字符串始终以
:
开头,因为这表示一个标签,并且在批处理运行时会被解释器忽略。
- 中间前缀字符(上例中的
-
)允许在源文件中存储多个文件。只需相应地更改 findstr
搜索词中的前缀字符串即可。
/bl ":-#" "%~f0"
findstr 在 运行 批处理 "%~f0"
中搜索每行 b
开头的 l
迭代字符串 :-#
。
- 变量不会展开
@ECHO OFF
SET file=output.bat
ECHO @ECHO OFF > %file%
ECHO ECHO HELLO >> %file%
ECHO PAUSE >> %file%
Pause
可以有限制替换为
@ECHO @ECHO OFF ^& ECHO HELLO ^& PAUSE >output.bat
我想知道是否有保留文本格式(如空格、换行符)的功能,因为我正在创建一个 .bat
文件并相应地创建另一个 .bat
文件。
现在,如果我想输出文本以创建第二个 .bat
文件,我将一次回显 1 行。
@ECHO OFF
SET file=output.bat
ECHO @ECHO OFF > %file%
ECHO ECHO HELLO >> %file%
ECHO PAUSE >> %file%
Pause
上面的方法实在是太低效了,想一次性全部输出
那么我可以这样输出文字吗?
ECHO "@ECHO OFF
ECHO HELLO
PAUSE">%file%
谢谢!
您可以一次重定向一段代码
@ECHO OFF
SET file=output.bat
(
ECHO @ECHO OFF
ECHO ECHO HELLO
ECHO PAUSE
) > %file%
另一种方法是使用多行字符^
,但是你还需要在每个文本行之后有一个空行
@ECHO OFF
SET "file=output.bat"
(
ECHO @ECHO OFF^
ECHO HELLO^
PAUSE
) > "%file%"
Jebs 解决方案的替代方案是使用前缀字符串和带有 findstr
的 for /f
循环来读取要输出到辅助文件的文本。
@ECHO OFF & CD /d "%~dp0"
(
For /f "tokens=1,* Delims=#" %%G in ('%__APPDIR__%findstr.exe /bl ":-#" "%~f0"')Do Echo(%%H
)>"outfile.bat"
outfile.bat
:-#@ECHO OFF
:-#ECHO HELLO
:-#PAUSE
备注:
- 要输出的文本中不能出现 Delim 字符。
#
被使用是因为它在批处理语法中没有意义 - 前缀字符串始终以
:
开头,因为这表示一个标签,并且在批处理运行时会被解释器忽略。 - 中间前缀字符(上例中的
-
)允许在源文件中存储多个文件。只需相应地更改findstr
搜索词中的前缀字符串即可。 /bl ":-#" "%~f0"
findstr 在 运行 批处理"%~f0"
中搜索每行b
开头的l
迭代字符串:-#
。- 变量不会展开
@ECHO OFF
SET file=output.bat
ECHO @ECHO OFF > %file%
ECHO ECHO HELLO >> %file%
ECHO PAUSE >> %file%
Pause
可以有限制替换为
@ECHO @ECHO OFF ^& ECHO HELLO ^& PAUSE >output.bat