Board logo

标题: [文本处理] 【已解决】多个文件夹内的文本批量改名 [打印本页]

作者: 思想之翼    时间: 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 编辑
  1. @echo off&setlocal EnableDelayedExpansion
  2. set a=10000
  3. for /f "delims=" %%i in ('dir /b *.txt') do (
  4. if not "%%~ni"=="%~n0" (
  5. if !a! LSS 10 (ren "%%i" "!a!.txt") else ren "%%i" "!a:~-4!.txt"
  6. set/a a+=1
  7. )
  8. )
复制代码
  1. @echo off&setlocal EnableDelayedExpansion
  2. for /l %%x in (1001,1,1002) do (
  3. set y=%%x
  4. set a=10000
  5. pushd "d:\数据\改名\!y:~1!\"
  6. for /f "delims=" %%i in ('dir /b *.txt') do (
  7. if not "%%~ni"=="%~n0" (
  8. if !a! LSS 10 (ren "%%i" "!a!.txt") else ren "%%i" "!a:~-4!.txt"
  9. set/a a+=1
  10. )
  11. )
  12. )
复制代码
解决了。
作者: /zhqsystem/zhq    时间: 2015-11-11 22:23

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set/a number=10000000
  4. for /f "delims=" %%i in ('dir/a-d/b/l/on "%~dp0\测试\*.txt"') do (
  5. echo,"%~dp0\测试\%%~nxi" "!number:~-4!%%~xi"
  6. set/a number+=1
  7. )
  8. 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://bbs.bathome.net/) Powered by Discuz! 7.2