gpt4 book ai didi

string - 提取.txt文件中以00开头的数字

转载 作者:可可西里 更新时间:2023-11-01 09:44:32 25 4
gpt4 key购买 nike

您好,我正在尝试找到一种方法来确定字符串中的常量,然后提取该常量左侧的一定数量的字符。

例如-我有一个 .txt 文件,在那个文件的某处有数字 00nnn 数字的例子是 00234 00765 ..../p>

所以我用

@echo off
findstr /i "00" *.txt > Listfile.txt
end

查找常量为00的所有字符串

现在我有

        00013       Jonas   Jonas
2015-12-09 12:36:41 Bell (waterproof)
- Technical Account
00014 Jonas Bell
- Technical Account
00019 Jonas Jonas
2016-09-12 09:11:12 T16032611 Technical Account
00055 - Jonas Jonas
2016-04-29 08:05:14 T16041312 Technical Account
00057 Jonas Jonas
2016-04-04 14:36:50 T15123112 Technical Account
00067 Jonas Jonas
2016-06-24 09:33:35 T15123112 Technical Account
00570 Jonas T16041312 Technical Account
00571 Jonas T16041312 Technical Account
00572 Jonas T16041312 Technical Account
00573 Jonas T16041312 Technical Account
00574 Jonas T16041312 Technical Account
00575 Jonas T16041312 Technical Account
00576 Jonas T16041312 Technical Account
00577 Jonas T16041312 Technical Account
00578 Jonas T16041312 Technical

接下来我尝试了:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
(
FOR /f "delims=" %%a IN (test.txt) DO (
SET "line=%%a"
SET "digits=5!line:~-0,5!"
FOR /L %%z IN (0,1,5) DO SET "digits=!digits:%%z=!"
IF NOT DEFINED digits ECHO(!line:~0,5!
)
)>newfile.txt

GOTO :EOF

但是我的问题是字符串中有空格,当一些以 "digits=5!line:~-0,5!" 和其他开头时,我将如何提取数字以 "digits=13!line:~-8,13!" 为例。

最佳答案

@echo off
setlocal EnableDelayedExpansion

for /F "delims=" %%a in (test.txt) do (
set "line=%%a"
for /F %%b in ("!line:*00=!") do echo 00%%b
)

输入数据应该有一个 00nnn number 每行,所以我用这种方式重新格式化了你的示例数据:

        00013       Jonas   Jonas
2015-12-09 12:36:41 Bell (waterproof) - Technical Account 00014 Jonas Bell
- Technical Account 00019 Jonas Jonas
2016-09-12 09:11:12 T16032611 Technical Account 00055 - Jonas Jonas
2016-04-29 08:05:14 T16041312 Technical Account 00057 Jonas Jonas
2016-04-04 14:36:50 T15123112 Technical Account 00067 Jonas Jonas
2016-06-24 09:33:35 T15123112 Technical Account 00570 Jonas T16041312 Technical Account
00571 Jonas T16041312 Technical Account
00572 Jonas T16041312 Technical Account
00573 Jonas T16041312 Technical Account
00574 Jonas T16041312 Technical Account
00575 Jonas T16041312 Technical Account
00576 Jonas T16041312 Technical Account
00577 Jonas T16041312 Technical Account
00578 Jonas T16041312 Technical

输出示例:

00013
00014
00019
00055
00057
00067
00570
00571
00572
00573
00574
00575
00576
00577
00578

编辑:使用 JScript 添加的新方法

我的第一个答案是使用一个小的批处理文件来解决这个问题的简单方法。但是,既然其他答案建议使用正则表达式,您应该知道您不需要为了在批处理文件。您可以使用几行 JScript language从 XP 开始预装在所有 Windows 版本上:

@if (@CodeSection == @Batch) @then

@echo off
cscript //nologo //E:JScript "%~F0" < test.txt
goto :EOF

@end

var match, search = /00\d{3}/g, file = WScript.StdIn.ReadAll();
while ( match = search.exec(file) ) WScript.Stdout.WriteLine(match[0]);

将此代码复制到批处理文件(.bat 扩展名)中;此代码比 PowerShell 解决方案运行。您还可以使用下一行获得问题的完整解决方案,即检查所有 *.txt 文件并在一次操作中提取数字:

findstr /i "00" *.txt | cscript //nologo //E:JScript "%~F0"

关于string - 提取.txt文件中以00开头的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39490914/

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