无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 17199|回复: 18
打印 上一主题 下一主题

[已解决] 用DOS批处理批量删除文件名指定位数字符

[复制链接]
跳转到指定楼层
1#
发表于 2015-9-16 09:42:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 overcet6 于 2015-9-21 13:46 编辑

就比如:
150908_080703_1023_083012345678.u8k
150908_080706_1001_084012345678.u8k
150908_080710_1068_085012345678.u8k
150908_080729_1046_086012345678.u8k
我想删完后只剩下:
83012345678.u8k
84012345678.u8k
85012345678.u8k
86012345678.u8k

删除前面20位字符,虽然我也有软件可以做到,但是要处理的文件太多,觉得还是dos省心,速度快,

谢谢了!


+++++++++++++9月21日更新+++++++++++++++

谢谢楼下各位的不辞辛劳,可能是我原帖没表达清楚,
不知道大家有没有看清楚
这个要求不只是把文件名分成四份,去掉前三份即可,还要把第四部分的第一个字符也要去掉,一共是20位字符,

所有楼下各位只是完成了一步,还差一步,

我想要是我事先说明:只保留文件名最后11位,就不会造成这么多误会了,

不过我已经找到相关代码,谢谢各位了!!
2#
发表于 2015-9-16 11:24:19 | 只看该作者
重命名?
回复

使用道具 举报

3#
发表于 2015-9-16 13:21:02 | 只看该作者
本帖最后由 wang_966 于 2015-9-16 13:52 编辑

假设 input.txt 内容如下列四行:
150908_080703_1023_083012345678.u8k
150908_080706_1001_084012345678.u8k
150908_080710_1068_085012345678.u8k
150908_080729_1046_086012345678.u8k

for /f %%f in (input.txt) do  for /f "tokens=1,2,3,4 delims=_" %%i in (%f%) do  move   %%i_%%j_%%k_%%l    %%l


for %%f in (*.u8k) do  for /f "tokens=1,2,3,4 delims=_" %%i in (%f%) do  move   %%i_%%j_%%k_%%l    %%l

______ 另一方法為:



如何利用 仿unix/linux命令 sed 一次替换文字中的 "某些相似性的字串" ==>
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=362520

假设 input.txt 内容如下列四行:
150908_080703_1023_083012345678.u8k
150908_080706_1001_084012345678.u8k
150908_080710_1068_085012345678.u8k
150908_080729_1046_086012345678.u8k


sed.exe -e "s/\(.*_\)\(.*\)/move   \1\2   \2/" < input.txt > ren_file.bat

执行  ren_file.bat 可完成改名

回复

使用道具 举报

4#
 楼主| 发表于 2015-9-16 14:20:33 | 只看该作者
wang_966 发表于 2015-9-16 13:21
假设 input.txt 内容如下列四行:
150908_080703_1023_083012345678.u8k
150908_080706_1001_084012345678 ...

谢谢,看来前一种不适合我,要是处理5000个文件,那代码里是不是要从1写到5000.,后面这个我试试看
回复

使用道具 举报

5#
 楼主| 发表于 2015-9-18 08:18:37 | 只看该作者
本帖最后由 overcet6 于 2015-9-18 08:22 编辑


对的,就是想弄个傻瓜式的,一键改名
文件太多,用软件光导入就需要很长时间,当然我也会把文件名导出来,然后构造批处理,每行一个的那种,但还是嫌慢,重复性的劳动,每天要做好几次,所以来看看有没有简单点的办法
回复

使用道具 举报

6#
 楼主| 发表于 2015-9-19 08:38:47 | 只看该作者
本帖最后由 overcet6 于 2015-9-19 08:40 编辑
wang_966 发表于 2015-9-16 13:21
假设 input.txt 内容如下列四行:
150908_080703_1023_083012345678.u8k
150908_080706_1001_084012345678 ...


这个第一种方法我试了,在代码前加上土著007说的那一行,然后保存成cmd文件,放在存放要处理文件的文件夹,双击执行,没反应,我用的是xp系统,

上一个回复之所以说5000行,是因为我看到代码里有“tokens=1,2,3,4”,不知道这是什么意思,因为你举例就是四行,所以我以为如果要是5000行,就要tokens=1,2,3,4,,到5000来。
回复

使用道具 举报

7#
发表于 2015-9-19 09:26:11 | 只看该作者
本帖最后由 土著007 于 2015-9-19 10:05 编辑
overcet6 发表于 2015-9-19 08:38
这个第一种方法我试了,在代码前加上土著007说的那一行,然后保存成cmd文件,放在存放要处理文件的文件 ...

哦,我仔细看了下二楼的,发现确实有错,我修改的如下,请保存为cmd文件执行,已在win10下测试通过:
@echo off
for /f "tokens=1,2,3,4* delims=_" %%i in ('dir /b *.u8k') do move %%i_%%j_%%k_%%l %%l
回复

使用道具 举报

8#
发表于 2015-9-19 09:30:57 | 只看该作者
overcet6 发表于 2015-9-19 08:38
这个第一种方法我试了,在代码前加上土著007说的那一行,然后保存成cmd文件,放在存放要处理文件的文件 ...

是根据文件名特点,用“_"作为分隔符,将文件名拆分成四个变量,第四个变量就是你需要的最终文件名
回复

使用道具 举报

9#
 楼主| 发表于 2015-9-19 09:42:30 | 只看该作者
本帖最后由 overcet6 于 2015-9-19 09:59 编辑
土著007 发表于 2015-9-19 09:26
哦,我仔细看了下二楼的,发现确实有错,我修改的如下,请保存为cmd文件执行,已在win10下测试通过:
...


这个是对了,完美!!还是批处理速度快,
回复

使用道具 举报

10#
发表于 2015-9-19 21:03:28 | 只看该作者
本帖最后由 wang_966 于 2015-9-19 21:07 编辑
overcet6 发表于 2015-9-19 09:42
这个是对了,完美!!还是批处理速度快,

第一种方式:
for %%f in (*.u8k) do  for /f "tokens=1,2,3,4 delims=_" %%i in (%f%) do  move   %%i_%%j_%%k_%%l    %%l
我忘了说明须编辑 *.BAT 再执行, 因为 %%f 适用在 *.BAT, 而 %f 是直接在 DOS 下命令.
利用 "_" 将字串切成4份, 其值分别存入 %%i, %%j, %%k, %%l

至于第二种方式比第一种方式更有弹性, 因为Unix/Linux原本的强项便是字串处理,
如果每一行并不一定有3个 "_", 则仍可正常执行,
利用 "\(.*_\)" 及 "\(.*\)" 将字串切成2份, 其值分别存入 \1, \2

如何利用 仿unix/linux命令 sed 一次替换文字中的 "某些相似性的字串" ==>
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=362520

假设 input.txt 内容如下列四行:
1509_08_080703_1023_083012345678.u8k
150_90080706_1001_084012345678.u8k
15090080710_1068_085012345678.u8k
150908080721046_086012345678.u8k

sed.exe -e "s/\(.*_\)\(.*\)/move   \1\2   \2/" < input.txt > ren_file.bat

执行  ren_file.bat 可完成改名
回复

使用道具 举报

11#
发表于 2015-9-19 22:00:35 | 只看该作者
for /f "delims=_ tokens=1-4" %%a in ('dir /b *.u8k') do ren %%a_%%b_%%c_%%d %%d
回复

使用道具 举报

12#
 楼主| 发表于 2015-9-21 13:41:51 | 只看该作者
问题已解决,谢谢各位了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-6-3 15:21

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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