标题: [文本处理] [已解决]批处理如何根据规则的目录名重命名不规则的文件? [打印本页]
作者: 狗屁不通 时间: 2012-8-17 20:10 标题: [已解决]批处理如何根据规则的目录名重命名不规则的文件?
本帖最后由 狗屁不通 于 2012-8-18 19:30 编辑
目录名有规律,文件名无规律。
比如如何把
C:\2012-08-08\1\2757382578394893745.txt 重命名为2012-08-08-1.txt
C:\2012-08-08\2\2875568378495738783.txt 重命名为2012-08-08-2.txt
C:\2012-08-08\3\9407583849278572702.txt 重命名为2012-08-08-3.txt
…………
数不清的文件需要这样做,各位大神,教教在下,感激不尽!
C:\
├─2012-08-08
│ ├─1
│ │ 2757382578394893745.txt
│ │
│ ├─2
│ │ 2875568378495738783.txt
│ │
│ ├─3
│ │ 9407583849278572702.txt
│ │
│ ├─4
│ │ 1048575839886757875.txt
│ │
│ └─6
│ 6758439925483912654.txt
│
├─2012-08-09
│ ├─1
│ │ 5648743988265648828.txt
│ │
│ ├─2
│ │ 7689065483265849657.txt
│ │
│ └─3 3768652893657889265.txt
……………………………
数不清的文件……………………
作者: Demon 时间: 2012-8-18 00:00
- @echo off
- pushd C:\
- for /f %%i in ('dir /a:d /b ^| findstr "^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$"') do (
- pushd %%i
- for /d %%j in (*) do (
- pushd %%j
- rename *.txt %%i-%%j.txt
- popd
- )
- popd
- )
- pause
复制代码
作者: apang 时间: 2012-8-18 01:30
一个目录下只能有一个文件存在?- @echo off
- set "re=[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]"
- for /f "delims=" %%a in ('dir /a-d /b /s^|findstr \\%re%\\') do (
- set "a=%%a"
- setlocal enabledelayedexpansion
- set "b=!a:%~dp0=!"
- set "b=!b:\%%~nxa=!"
- ren "!a!" "!b:\=-!%%~xa"
- endlocal
- )
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |