dev*_*vio 66
在NT风格的cmd.exe下,您可以使用循环遍历文本文件的行
FOR /F %i IN (file.txt) DO @echo %i
Run Code Online (Sandbox Code Playgroud)
在命令提示符下键入"help for"以获取更多信息.(不知道你使用的"DOS"是否有效)
joh*_*tok 39
您可以使用for命令:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
Run Code Online (Sandbox Code Playgroud)
类型
for /?
Run Code Online (Sandbox Code Playgroud)
在命令提示符下.此外,您可以解析ini文件!
jeb*_*jeb 36
FOR-LOOP通常有效,但存在一些问题.FOR不接受空行,超过~8190的行是有问题的.如果禁用延迟扩展,则扩展仅可靠.
CR/LF与单LF的检测似乎也有点复杂.
NUL字符也是有问题的,因为FOR-Loop立即取消了阅读.
因此,直接二进制读取几乎是不可能
空行的问题可以用技巧解决.使用findstr命令为每行添加行号,并在读取后删除前缀.
@echo off
SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ t.txt"`) do (
set "var=%%a"
SETLOCAL EnableDelayedExpansion
set "var=!var:*:=!"
echo(!var!
ENDLOCAL
)
Run Code Online (Sandbox Code Playgroud)
在启用和禁用延迟扩展之间切换是必要的,以便安全地使用字符串,例如!或^^^xy!z.
这是因为该行set "var=%%a"仅在使用DisabledDelayedExpansion时是安全的,否则会删除感叹号并将插入符号用作(辅助)转义字符,它们也会被删除.
但是使用变量var只对EnabledDelayedExpansion是安全的,因为即使是一个call %%var%%会失败的内容,如"&"&.
编辑:添加了set/p变体
有第二种方式读取文件set /p,唯一的缺点是每行限制为~1024个字符,并删除行尾的控制字符.
但优点是,您不需要延迟切换,并且更容易将值存储在变量中
@echo off
setlocal EnableDelayedExpansion
set "file=%~1"
for /f "delims=" %%n in ('find /c /v "" %file%') do set "len=%%n"
set "len=!len:*: =!"
<%file% (
for /l %%l in (1 1 !len!) do (
set "line="
set /p "line="
echo(!line!
)
)
Run Code Online (Sandbox Code Playgroud)
将其读取为"二进制"为十六进制表示
您可以查看SO:使用批处理文件将二进制文件转换为HEX表示
小智 8
一种非常简单的方法是使用以下命令:
set /p mytextfile=< %pathtotextfile%\textfile.txt
echo %mytextfile%
Run Code Online (Sandbox Code Playgroud)
这只会显示文本文件中的第一行文本。另一种方法是使用以下命令:
type %pathtotextfile%\textfile.txt
Run Code Online (Sandbox Code Playgroud)
这会将所有数据放在屏幕上的文本文件中。希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
372717 次 |
| 最近记录: |