如果我的文件包含以下文本:
sampleA1xxx sampleA2yyyy sampleA3zzzzz ... sampleA4hhhhh
我想使用 Windows 批处理脚本找到 sampleA4 并显示 sampleA4hhhh。
那就是我的输出应该是:sampleA4hhhhh
谁能帮帮我。
如果我的文件包含以下文本:
sampleA1xxx sampleA2yyyy sampleA3zzzzz ... sampleA4hhhhh
我想使用 Windows 批处理脚本找到 sampleA4 并显示 sampleA4hhhh。
那就是我的输出应该是:sampleA4hhhhh
谁能帮帮我。
@ECHO OFF
SETLOCAL
FOR /f "delims=" %%i IN (q17316008.txt) DO SET line=%%i
SET line=%line:^= %
SET line=%line:*sampleA4=sampleA4%
FOR %%i IN (%line:^^= %) DO SET line=%%i&GOTO :done
:done
ECHO %line%
GOTO :EOF
这应该做我收集的任务。它假定"samplea4"
字符串存在于文件的单行中,不区分大小写,并且该行不超过行长度的 ~8K 限制。
只需将插入符号替换为空格,将前导字符删除到目标字符串的第一次出现,并将该目标字符串作为列表处理;第一个元素将是所需的字符串,因此在可用时停止处理。
拿一批或看看 GNUWin sed:
>类型文件 ^^sampleA1xxx ^^sampleA2yyyy ^^sampleA3zzzzz ^^sampleA4hhhhh >sed -r "s/.*(\b\w+4\w+)/\1/" 文件 样本A4hhhhh
@echo off
setlocal EnableDelayedExpansion
set target=sampleA4
set len=8
for /F "delims=" %%a in ('findstr "%target%" theFile.txt') do (
for %%b in (%%a) do (
set word=%%b
if "!word:~0,%len%!" equ "%target%" (
echo !word:~%len%!
)
)
)
好的,我自己尝试了一个类似的案例,效果很好:
for /f "tokens=4 delims=^^" %%a in (seperate.txt) do (echo %%a)
pause
注意:这是为批处理文件设计的,并将“tokens=”后面的 4 替换为您要停止的任何分隔文本。
希望这有帮助,
你的莫娜。