**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
3天前关闭。
这篇文章是8小时前编辑并提交审查的。
Improve this question
我想得到给定字符串之间的文本/行。
示例
#######LIST 1
item 1
item 2
item 3
######LIST 2
我希望输出的内容:#######LIST 1
和######LIST 2
之间的线
@echo off
for /F "tokens=* USEBACKQ" %%F in (` | findstr "###### LIST 1" `) do (
set string=%%F
)
set string=%string:~68%
set string=%string:~,-1%
echo %string%
for /F "tokens=* USEBACKQ" %%F in (`findstr /I /C:"###### LIST 2" text.txt`) do (
set string2=%%F
)
set string2=%string2:~68%
set string2=%string2:~,-1%
echo %string2%
1条答案
按热度按时间n6lpvg4x1#
可通过以下方式完成该任务:
如果批处理文件必须以某种方式处理
#######LIST 1
和######LIST 2
之间的非空行,则可以使用echo(%%I
以外的其他命令。如果通过双击Windows文件资源管理器中的批处理文件来执行批处理文件,则可以在:Finish
和最后一行endlocal
之间插入更多命令行,以执行类似pause
的操作从已经打开的命令提示符窗口中运行它以查看输出。请注意,在这个例子中,在
######LIST 2
行的末尾有一个尾随空格。上面的代码要求在标记要处理的部分的开始和结束的两行末尾没有尾随空格(=只是这个例子代码的输出)。要了解所使用的命令及其工作原理,请打开一个command prompt窗口,在其中执行以下命令,然后完整而仔细地阅读每个命令显示的帮助页面。
call /?
...解释%~dp0
驱动器和参数0的路径,它是始终以反斜杠结尾的批处理文件的完整路径。在上面的代码中可以省略%~dp0
,以便处理当前目录(而不是批处理文件目录)中名为Text File.txt
的文本文件。endlocal /?
for /?
goto /?
if /?
set /?
setlocal /?
另见:
echo(%%I
而不是echo %%I
输出仅包含正常空格和制表符的行或/?
正确,而不是获取命令回显模式的状态输出或命令ECHO的帮助。