标题: [文本处理] 【已解决】多个文件夹内的文本批量改名 [打印本页]
作者: 思想之翼 时间: 2015-11-11 18:57 标题: 【已解决】BAT或VBS:多个文件夹内的文本批量改名
本帖最后由 思想之翼 于 2015-11-12 00:10 编辑
D:/数据/内有命名为001-210的子文件夹,每个子文件夹内有命名为00001-10000的txt文本
现在欲将所有子文件夹内的文本批量改名,改名规则是:
00001改为0000
00002改为0001
......
10000改为9999
BAT VBS均可。恳望得到帮助。
作者: 思想之翼 时间: 2015-11-11 21:04 标题: 【已解决】多个文件夹内的文本批量改名
本帖最后由 思想之翼 于 2015-11-12 00:27 编辑
- @echo off&setlocal EnableDelayedExpansion
- set a=10000
- for /f "delims=" %%i in ('dir /b *.txt') do (
- if not "%%~ni"=="%~n0" (
- if !a! LSS 10 (ren "%%i" "!a!.txt") else ren "%%i" "!a:~-4!.txt"
- set/a a+=1
- )
- )
复制代码
- @echo off&setlocal EnableDelayedExpansion
- for /l %%x in (1001,1,1002) do (
- set y=%%x
- set a=10000
- pushd "d:\数据\改名\!y:~1!\"
- for /f "delims=" %%i in ('dir /b *.txt') do (
- if not "%%~ni"=="%~n0" (
- if !a! LSS 10 (ren "%%i" "!a!.txt") else ren "%%i" "!a:~-4!.txt"
- set/a a+=1
- )
- )
- )
复制代码
解决了。
作者: /zhqsystem/zhq 时间: 2015-11-11 22:23
- @echo off
- setlocal enabledelayedexpansion
- set/a number=10000000
- for /f "delims=" %%i in ('dir/a-d/b/l/on "%~dp0\测试\*.txt"') do (
- echo,"%~dp0\测试\%%~nxi" "!number:~-4!%%~xi"
- set/a number+=1
- )
- pause
复制代码
作者: /zhqsystem/zhq 时间: 2015-11-11 23:14
本帖最后由 /zhqsystem/zhq 于 2015-11-11 23:17 编辑
回复 4# 思想之翼
'dir/a-d/b/l/on "%~dp0\测试\*.txt"'这句直接到路径将 %~dp0\测试\ 下边的也要改 替换实际路径文件夹目录,set/a number=10000000
这个数值偏大可以改小点保证要截取的字符多一位[改最后的数值计算时会默认在最后的数值计算],只是取值了后边的后四位字符
作者: /zhqsystem/zhq 时间: 2015-11-11 23:30
回复 6# 思想之翼
这个不包含子文件夹,包含数字序列就错了
set/a number=10000
for /f "delims=" %%i in ('dir/a-d/b/l/on "d:\数据\差\*.txt"') do (
echo,"d:\数据\差\%%~nxi" "!number:~-4!%%~xi"
set/a number+=1
)
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |