gpt4 book ai didi

batch-file - 批量循环遍历文件

转载 作者:行者123 更新时间:2023-12-03 22:16:23 24 4
gpt4 key购买 nike

我正在尝试在 Notepad++ 中进行批处理,以计算所选文本中的重复行数。

到目前为止,我的 Notepad++ 工作正常

NPE_CONSOLE v+
CLS
ECHO $(CURRENT_WORD)
CON_SAVETO "H:\tmp.txt"
NPE_CONSOLE v-

此脚本将所选文本保存到 tmp.txt 中,唯一的问题是它在底部包含 CON_SAVETO "H:\tmp.txt" 但我现在可以接受了。

编辑:此外,我不认为 N​​otepad++ 是这里的问题,因为我尝试从 cmd 行运行批处理文件并遇到相同的错误/问题。我也尝试手动设置 tmp.txt 文件,但仍然存在同样的问题。

我的批处理文件是导致问题的原因:

::@ECHO OFF
CD "H:\"
SET counter=0
SET prev=a

FOR /F "tokens=*" %%L IN (tmp.txt) DO (
SET blnOut=0
SET curLine="%%L"

IF /I %prev%==%curLine% (
SET counter=%counter%+1
SET blnOut=1
)
IF %blnOut%==0 (
IF %prev%==a (
SET counter=%counter%+1
SET blnOut=1
)
IF %blnOut%==0 (
ECHO %curLine%- %counter%
SET counter=1
)
)
SET prev=%curLine%
)

我已经尝试了所有我能想到的方法,包括将进程拆分为一个函数,但我不断收到类似 Unexpected ) 的错误,或者,如果它确实运行了,它不会循环遍历文件。

目前,这是tmp.txt:

1
2
3
4
5
6
7
8
1
4
5
8
4
3
4
4
5

所以理想的输出是:

1 - 2
2 - 1
3 - 2
4 - 5
5 - 3
6 - 1
7 - 1
8 - 2

最佳答案

@ECHO OFF
SETLOCAL enabledelayedexpansion
FOR %%i IN (prev) DO SET "%%i="
FOR /f "delims=" %%i IN ('sort ^<temp.txt') DO (
IF DEFINED prev (
IF "!prev!"=="%%i" (SET /a count+=1) ELSE (
ECHO !prev! - !count!
SET "prev="
)
)
IF NOT DEFINED prev (
SET prev=%%i
SET /a count=1
)
)
ECHO %prev% - %count%

这是我的版本。对输入文件进行排序,将相似的行组合在一起,然后当行内容改变时,显示之前的内容并计数和重置计数器以及上一行的记录。

关于batch-file - 批量循环遍历文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15840818/

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