gpt4 book ai didi

batch-file - 如何禁用 `eol` 的 `delims` 和 `for/F` 选项?

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

for命令与 /F switch 用于解析文本字符串行(文字字符串,从文本文件中读取,或从命令行输出中检索)并将每一行解析为一个或多个标记。

我怎样才能得到一行文本,不替换任何字符,也不忽略任何行?

我知道for /F "delims=" %L in (*) do echo."%L"返回每个未编辑的已解析(非空)行。然而,由于 eol选项默认为 ; , 以该字符开头的每一行都将被忽略。
如果我使用 for /F "tokens=* eol=" %L in (*) do echo."%L" , 我禁用了 eol选项 [编辑: 这种说法是不正确的,"eol="不会禁用 eol选项,但它定义了 "作为 eol字符!],但是 delims选项默认为空格和制表符,因此任何前导空格和/或制表符都将被删除。
(在批处理文件中使用 %%L* 代表此处文本字符串的任何有效来源。)

所以我的问题换句话说:有没有办法指定 delims 没有 eol人物?

我试图指定两个选项字符串 ( "eol=" "delims=" ) 但这样会导致语法错误。选项字符串 "eol=delims=" 也是如此.

注意:这个问题在标记化时不会持续存在,也就是说,当 delims选项已设置,因为它的应用优先级似乎高于 eol (奇怪但幸运的是),所以你可以“隐藏”eol背后delims通过指定 delims字符也为 eol .

最佳答案

1) 你永远无法强制 bat 不ignore empty / delimiter-only lines.This 可以通过管道传输到 findstr/R/N "^" 命令并使用 "tokens=1* delims=:" 并且只得到第二个 token

2) 停用eol and delim同时你可以使用这个语法:

For /f tokens^=*^ delims^=^ eol^= %%a in (file.txt) do echo.%%a

虽然空行仍然会被忽略。

关于batch-file - 如何禁用 `eol` 的 `delims` 和 `for/F` 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32192678/

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