【发布时间】:2022-01-24 00:07:17
【问题描述】:
我尝试创建一个 Windows 批处理脚本文件,它将处理以下文本 (.txt) 文件内容:
SampleTextfile.txt:
John Doe$Jane Doe
Marky Mark$Justin Timberlake
Elvis Presley$Sarah Madden
Rufus Deer$Kerry John (bible.com) (Megaducks) (TruesomeWind)
目标是:
-
删除直到第一个
$分隔符的所有内容,同时删除分隔符本身,这将导致:Jane Doe Justin Timberlake Sarah Madden Kerry John (bible.com) (Megaducks) (TruesomeWind) -
从第二个
(分隔符中删除所有内容,同时删除分隔符本身,这会导致:Jane Doe Justin Timberlake Sarah Madden Kerry John
在以下代码中,第二个分隔符的命令行生成一个没有错误消息的空文件:
@ECHO OFF
SETLOCAL
( FOR /f "tokens=1*delims=$" %%a IN (SampleTextfile.txt) DO ECHO( %%b
"tokens=1 delims=(" %%b
)>SampleTextfileV2.txt
TYPE SampleTextfileV2.txt
GOTO :EOF
有人可以告诉我必须在代码中更改什么而不是 "tokens=1 delims=(" %%b 才能获得第二个目标吗?
【问题讨论】:
-
DOS 6.22 还是现代 CMD? DOS 没有
for /f循环。 -
如果您使用的是现代 Windows 操作系统而不是 MS-DOS,您可以使用它。
FOR /F "usebackq tokens=2 delims=$(" %%G IN ("SampleTextfile.txt") DO ECHO %%G -
您是真的在使用 MS DOS 还是您指的是 Windows 中的命令行? (后者与 MS-DOS 完全无关
-
所有,在我的笔记本电脑上安装的 Microsoft Windows 10 Home 中,我打开了 MS Dos 命令行(Microsoft Windows [版本 10.0.19042.1415]),我正在运行上述批处理以纯数据文本文件作为输入的脚本 (.bat)。您能否更正上述列出的代码?
-
@renovialand 我给了你一个代码修复。你没试过吗?不管命令行不是 MS-DOS。 DOS是一个操作系统。 CMD.exe 只是一个外壳。
标签: windows batch-file cmd