标题: [文本处理] 批处理如何获取字符列表出现次数最多的字符? [打印本页]
作者: hentai87 时间: 2021-9-6 22:04 标题: 批处理如何获取字符列表出现次数最多的字符?
- echo off
- for /f "delims=\ tokens=5" %%i in ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services"') do (
- for /f "delims=_ tokens=2" %%k in ("%%i") do (
- echo %%k
- ))
复制代码
得
4b59e
4b59e
4b59e
4b59e
4b59e
Rec
GPIO2
GPIO2
想要4b59e,明显4b59e最多
作者: newswan 时间: 2021-9-6 22:07
- echo off
- for /f "delims=\ tokens=5" %%i in ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services"') do (
- for /f "delims=_ tokens=2" %%k in ("%%i") do (
- echo %%k
- set /a count_%%k+=1
- ))
- set count
复制代码
作者: hentai87 时间: 2021-9-6 22:10
回复 2# newswan
不是想要统计数量,想直接输出最多的那个变量
作者: newswan 时间: 2021-9-6 22:14
回复 3# hentai87
得到统计数量,就找到最大那个了
作者: newswan 时间: 2021-9-6 22:17
本帖最后由 newswan 于 2021-9-6 22:19 编辑
- for /f "usebackq tokens=2-3 delims=_=" %%a (`set count_`) do (
- if %%b GTR !count! (
- set count=%%b
- set name=%%a
- )
- )
复制代码
有没有多个最大值
作者: hentai87 时间: 2021-9-6 22:41
回复 5# newswan
运行后闪退
没有多个最大值
作者: hentai87 时间: 2021-9-6 22:42
回复 4# newswan
最大的结果还得用在其他命令里,不是我想知道是什么值
作者: newswan 时间: 2021-9-6 22:48
回复 7# hentai87
前面加上- setlocal ENABLEDELAYEDEXPANSION
复制代码
作者: hentai87 时间: 2021-9-6 22:51
回复 8# newswan
还是闪退
作者: hentai87 时间: 2021-9-6 22:52
echo off
setlocal ENABLEDELAYEDEXPANSION
for /f "usebackq tokens=2-3 delims=_=" %%a (`set count_`) do (
if %%b GTR !count! (
set count=%%b
set name=%%a
)
)
pause
作者: hentai87 时间: 2021-9-6 23:17
回复 5# newswan
是不是不全,都没有运行REG QUERY,这段应该放哪里
作者: hentai87 时间: 2021-9-6 23:21
REG QUERY的输出
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WpnService
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WpnUserService_4b59e
。。。
作者: newswan 时间: 2021-9-6 23:29
本帖最后由 newswan 于 2021-9-6 23:39 编辑
- echo off
- setlocal ENABLEDELAYEDEXPANSION
-
- for /f "delims=\ tokens=5" %%i in ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services"') do (
- for /f "delims=_ tokens=2" %%k in ("%%i") do (
- set /a count_%%k+=1
- )
- )
-
- set count=0
- for /f "usebackq tokens=2-3 delims=_=" %%a in (`set count_`) do (
- echo %%a %%b
- if %%b GTR !count! (
- set count=%%b
- set name=%%a
- )
- )
- echo %name%
复制代码
作者: hentai87 时间: 2021-9-6 23:31
回复 13# newswan
还是闪退
作者: newswan 时间: 2021-9-6 23:40
少 了 in in in in in
作者: hentai87 时间: 2021-9-6 23:46
回复 15# newswan
加了in结果为空
echo off
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=\ tokens=5" %%i in ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services"') do (
for /f "delims=_ tokens=2" %%k in ("%%i") do (
set /a count_%%k+=1
)
)
set count=0
for /f "usebackq tokens=2-3 delims=_=" %%a in (`set count_`) do (
if "%%b" GTR "!count!" (
set count=%%b
set name=%%a
)
)
pause
作者: newswan 时间: 2021-9-6 23:51
最后
echo %name%
作者: hentai87 时间: 2021-9-7 00:08
回复 17# newswan
结果不对。。不是次数最多的
作者: newswan 时间: 2021-9-7 00:12
回复 18# hentai87
if 后面 把引号去掉
作者: WHY 时间: 2021-9-7 13:33
本帖最后由 WHY 于 2021-9-7 19:42 编辑
- @echo off
- setlocal enabledelayedexpansion
- set "Max=0"
- for /f "delims=" %%i in ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services"') do (
- for /f "tokens=2 delims=_" %%k in ("%%~nxi") do (
- set /a _%%k+=1
- if !_%%k! GTR !Max! set "Max=!_%%k!" & set "Name=%%k"
- )
- )
- echo;!Max! !Name!
- pause
复制代码
作者: Batcher 时间: 2021-9-7 15:51
回复 16# hentai87 - @echo off
- for /f "tokens=5 delims=\" %%i in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services"') do (
- for /f "tokens=2 delims=_" %%j in ("%%i") do (
- set /a count_%%j+=1
- )
- )
- set count=0
- for /f "tokens=2-3 delims=_=" %%a in ('set count_') do (
- if %%b gtr !count! (
- set "count=%%b"
- set "name=%%a"
- )
- )
- echo !name!: !count!
- endlocal
- pause
复制代码
作者: WHY 时间: 2021-9-7 19:43
本帖最后由 WHY 于 2021-9-7 20:25 编辑
- $arr = dir HKLM:\SYSTEM\CurrentControlSet\Services | ?{ $a = $_.Name.Split('\')[-1].Split('_'); $a.Count -ge 2 } | forEach{$a[1]} | group | sort Count -Desc;
- '' + $arr[0].Count + ' ' + $arr[0].Name
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |