标题: [文件操作] 求助批处理批量删除文件名末尾的数字 [打印本页]
作者: bingo122 时间: 2024-10-7 23:36 标题: 求助批处理批量删除文件名末尾的数字
求助!
我需要把一批忘记末尾数字后缀去除,数字不固定数量,浅学bat,没找到对应正则,求助各位吴彦祖,万分感谢!!!
例:
4312412-测试菜市场 测试测试312.txt
4312-测试菜市场 测测试31.txt
431242-测试菜市场 试测试2.txt
431242-测试菜市场 试测试66.txt
4312-测试菜市场 测试试3212.txt
输出结果需求:
4312412-测试菜市场 测试测试.txt
4312-测试菜市场 测测试.txt
431242-测试菜市场 试测试.txt
431242-测试菜市场 试测试.txt
4312-测试菜市场 测试试.txt
作者: Batcher 时间: 2024-10-8 07:20
回复 1# bingo122
文件名里面固定有且只有一个 - 而且没有挨着待删除的数字吗?
作者: qixiaobin0715 时间: 2024-10-8 08:53
本帖最后由 qixiaobin0715 于 2024-10-8 09:09 编辑
如果末尾数字不超过4位数,这样勉强可行:- @echo off
- for /l %%i in (9999,-1,0) do (
- if exist *%%i.txt (
- for /f "delims=" %%j in ('dir /b /a-d *%%i.txt') do (
- set "str=%%j"
- setlocal enabledelayedexpansion
- set "str=!str:%%i.txt=.txt!"
- ren "%%j" "!str!"
- endlocal
- )
- )
- )
- pause
复制代码
代码未经测试。
作者: aloha20200628 时间: 2024-10-8 10:37
回复 1# bingo122
删除文件名尾部数值字段可能会导致重名,如下
431242-测试菜市场 试测试2.txt》 431242-测试菜市场 试测试.txt
431242-测试菜市场 试测试66.txt》431242-测试菜市场 试测试.txt
楼主须给出对策...
作者: bingo122 时间: 2024-10-8 15:10
回复 2# Batcher
只需要删除末尾数字,重名覆盖
作者: hfxiang 时间: 2024-10-8 15:18
本帖最后由 hfxiang 于 2024-10-8 15:19 编辑
回复 1# bingo122
针对楼主给定的数据样本,在命令行方式下,进入对应文件夹,用第3方工具gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe )的如下指令可实现:- dir *.txt/b|gawk "{o=$0;sub(/[0-9]+\.txt$/,\".txt\");if(o!=$0){print \"mobve \042\"o\"\042 \042\"$0\"\042\"}}"|cmd.exe
复制代码
作者: aloha20200628 时间: 2024-10-8 16:40
本帖最后由 aloha20200628 于 2024-10-8 18:02 编辑
回复 5# bingo122 - @echo off &setlocal &for /f "delims=" %%F in ('dir /b/a-d *.txt') do (
- set "F=%%F" &set "nF=%%~nF" &set "xF=%%~xF"
- (call :cut#n)
- )
- endlocal&pause&exit/b
- :cut#n // 删除文件名尾部的数值字段,重名予以覆盖
- setlocal enabledelayedexpansion
- :#n
- if not defined nF (endlocal&exit/b) else (
- if !nF:~-1! geq 0 if !nF:~-1! leq 9 (set "nF=!nF:~,-1!" &goto :#n)
- move /y "!F!" "!nF!!xF!"
- endlocal&exit/b
- ) 2>nul
复制代码
作者: Five66 时间: 2024-10-8 20:59
重名覆盖?真的没问题吗?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |