gpt4 book ai didi

batch-file - 如何仅获取 stats.txt 文件的所有第二行?

转载 作者:行者123 更新时间:2023-12-03 23:31:34 25 4
gpt4 key购买 nike

我目前有这个命令用于批处理文件

for /F "skip=1 tokens=1 delims=\n" %i in (stats.txt) do echo %i

stats.txt 的内容是

Title = Subaru's Great Rehab Strategy
URL = http://dynasty-scans.com/chapters/subarus_great_rehab_strategy
Tags = Subaru x Tsukasa[|]Yuri[|]
No. of Pages = 3

^ 注意:最后一行实际上是空白的

notepad++

这行代码的想法是用 URL 返回第二行.最终目标是我将在某种循环中运行此行,遍历一系列 ~12000+ stats.txt 文件并收集所有 URL一行到一个文件中

但是当我运行命令时我得到了这个

cmd

如您所见,它跳过了第一行,但在 n 的位置被切断了。在 dynasty并输出最后 3 行。

现在如果我删除 delims=\n我得到相同的 3 行,但我没有得到空格前的第一个单词,这似乎表明 delims 的值是将一行拆分为 "tokens" 然后我只抓取第一个(并且空格必须是默认值)

当我进入 notepad++ 时,打开查找和替换对话框,将搜索模式转为扩展并查找“\r\n”,我被带到每一行的末尾,这就是我选择 delims 的原因是\n 假设这将使整行成为一个标记

所以我的问题是我怎样才能只获取我的 stats.txt 文件的所有第二行?

最佳答案

for/f 循环已经将回车和/或换行视为行尾。无需将其指定为分隔符。使用 delims=\n 您实际上是在说所有文字反斜杠 字母 n 都应该被视为标记分隔符。如果你想要整行,你想要的是 "skip=1 delims=".

出于习惯,当使用 for/f 循环读取文件的内容时,我发现启用 usebackq 很有用,以防文件名/路径包含空格或 & 符号。这允许您引用文件名以防止此类潜在的背叛。

@echo off
setlocal

for /F "usebackq skip=1 delims=" %%I in ("stats.txt") do if not defined URL set "URL=%%~I"
echo %URL%

放入上下文中,使用它来读取许多名为 stats.txt 的文件并将 URL 输出到单个集合中,将整个内容包含在另一个 for 循环中并启用延迟扩展。

@echo off
setlocal

>URLs.txt (
for /R %%N in ("*stats.txt") do (
for /F "usebackq skip=1 delims=" %%I in ("%%~fN") do (
if not defined URL set "URL=%%~I"
)
setlocal enabledelayedexpansion
echo(!URL!
endlocal
set "URL="
)
)

echo Done. The results are in URLs.txt.

如果您想从每行的开头去除“URL =”并仅保留地址,您可以尝试将 for/F 参数更改为 "usebackq skip=1 tokens=3" 如果所有文件都遵循相同的格式 URLSpace=Spacehttp://etc.。如果您不能依赖它,或者任何 URL 可能包含未编码的空格,您也可以将 echo(!URL! 更改为 echo(!URL:*http=http!

关于batch-file - 如何仅获取 stats.txt 文件的所有第二行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33884898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com