找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 61950|回复: 15

[文件操作] 批处理如何把文件上的数字给提取出来的?

[复制链接]
发表于 2020-12-28 13:55:09 | 显示全部楼层 |阅读模式
\0df8a54b23ccd8c4cd9e758c45cd1880 *F:\\xiaofeng\\庄学忠 - 午夜梦回时.flac.001
\188d26f0f9288fe17ffbde57d1f415fc *F:\\xiaofeng\\庄学忠 - 午夜梦回时.flac.002
\8e3d3debc4cfe0469ae4502f7db95f33 *F:\\xiaofeng\\庄学忠 - 午夜梦回时.flac.003
\23623933a023f45165a4fbffdabd1249 *F:\\xiaofeng\\庄学忠 - 午夜梦回时.flac.004
\3fc208d855e08a36e4b015b3a6978d24 *F:\\xiaofeng\\庄学忠 - 午夜梦回时.flac.005
\177e7aa0a2e8f6decf58efcc59645c05 *F:\\xiaofeng\\庄学忠 - 午夜梦回时.flac.006
\fc4a6d8073fbe86e2cc07390b46163da *F:\\xiaofeng\\庄学忠 - 午夜梦回时.flac.007
\97f049c1f13efced6fed550a1ccc8ace *F:\\xiaofeng\\庄学忠 - 午夜梦回时.flac.008
\dfc352818304dec53188a358ebdd6720 *F:\\xiaofeng\\庄学忠 - 午夜梦回时.flac.009

======> 希望得到的结果是

0df8a54b23ccd8c4cd9e758c45cd1880
188d26f0f9288fe17ffbde57d1f415fc
8e3d3debc4cfe0469ae4502f7db95f33
23623933a023f45165a4fbffdabd1249
3fc208d855e08a36e4b015b3a6978d24
177e7aa0a2e8f6decf58efcc59645c05
65eb6cdfb6c54ab1007369d63e90b0dc
97f049c1f13efced6fed550a1ccc8ace
dfc352818304dec53188a358ebdd6720
发表于 2020-12-28 14:06:22 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2020-12-28 16:34 编辑

回复 1# netdzb
  1. @echo off
  2. (for /f "delims=\ " %%a in (a.txt) do echo %%a)>b.txt
  3. pause
复制代码
 楼主| 发表于 2020-12-28 14:37:38 | 显示全部楼层
本帖最后由 netdzb 于 2020-12-28 14:39 编辑

回复 2# qixiaobin0715

@echo off
for /f "tokens=1 delims=\ " %%a in (result.txt) do (
        set /a n+=1
        set name= 00!n!
        echo %%a !name:~-2!
)>>b.txt
pause


我想再加上行号,哪里不对啊,运行结果不是数字。
我想添加的数字如001,002,003这种形式的,应该如何修改?
发表于 2020-12-28 14:39:45 | 显示全部楼层
setlocal enabledelayedexpansion
 楼主| 发表于 2020-12-28 14:43:25 | 显示全部楼层
回复 4# qixiaobin0715 ...

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1 delims=\ " %%a in (result.txt) do (
        set /a n+=1
        set name= 00!n!
        echo %%a !name:~-2!
)>>b.txt
pause

运行结果不对,不是我要的001,002.003,......,是28,29,30,31,哪里错了?
发表于 2020-12-28 14:47:42 | 显示全部楼层
!name:~-3!
发表于 2020-12-28 14:53:34 | 显示全部楼层
00!n!前有空格
发表于 2020-12-28 15:40:30 | 显示全部楼层
回复 2# qixiaobin0715


    tokens=1 可以省略吧
发表于 2020-12-28 15:54:52 | 显示全部楼层
是的是的,最后想到了,没改。
发表于 2020-12-28 22:17:38 | 显示全部楼层
回复 7# qixiaobin0715


    还有就是不能直接对0开头的数字进行数学运算,否则会被认为是八进制。
发表于 2020-12-28 22:21:16 | 显示全部楼层
回复 10# Batcher
上面并没有你所说的运算,只是相互组合。
发表于 2020-12-28 22:23:46 | 显示全部楼层
回复 11# qixiaobin0715


    仔细看了一下,确实是这样。
发表于 2020-12-28 22:42:31 | 显示全部楼层
回复 5# netdzb
如果每行最后的数字代表行数的话,可以这样:
  1. @echo off
  2. (for /f "tokens=1,8 delims=.\ " %%a in (a.txt) do echo %%a %%b)>b.txt
  3. pause
复制代码
 楼主| 发表于 2020-12-28 22:57:00 | 显示全部楼层
本帖最后由 netdzb 于 2020-12-28 22:59 编辑

回复 13# qixiaobin0715


谢谢,原来我绕路了啊,不过也正好练习一下批处理的写法。
 楼主| 发表于 2020-12-30 09:41:03 | 显示全部楼层
回复 13# qixiaobin0715

%%b变量对应的是001,002,003.......
如何写代码把最后一个字符去掉,编程00,00,00,
代码我这样写,运行结果不对啊
echo %%b:~-1,
这样变成了001:~-1,002:~-1,003:~-1,请指点一下,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 09:25 , Processed in 0.024165 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表