找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 63718|回复: 15

[文件操作] 【已解决】求助批处理文件名互换位置

[复制链接]
发表于 2020-11-27 01:22:02 | 显示全部楼层 |阅读模式
本帖最后由 gzjhong 于 2020-11-30 10:38 编辑

原格式:
111 222 3333 4444_555555_66666666
现在想改成:
66666666555555_11122233334444
请问能通过批处理实现吗?
发表于 2020-11-27 08:01:47 | 显示全部楼层
  1. for %%a in (*) do (
  2.   for /f "tokens=1-5* delims=_ " %%A in ("%%a") do (
  3.     ren "%%a" "%%F%%E_%%A%%B%%C%%D"
  4.   )
  5. )
复制代码
 楼主| 发表于 2020-11-29 20:51:38 | 显示全部楼层
flashercs 发表于 2020-11-27 08:01



    谢谢,用您提供的批处理,现在变成了66666666.txt_11122233334444555555,还是没达到效果,哪位大神能帮忙再改一下吗?
发表于 2020-11-29 20:59:22 | 显示全部楼层
回复 3# gzjhong
  1. for %%a in (*) do (
  2.   for /f "tokens=1-5* delims=_ " %%A in ("%%~na") do (
  3.     ren "%%a" "%%F%%E_%%A%%B%%C%%D%%~xa"
  4.   )
  5. )
复制代码
 楼主| 发表于 2020-11-29 21:03:25 | 显示全部楼层
回复  gzjhong
flashercs 发表于 2020-11-29 20:59



    现在变成了66666666_11122233334444555555.txt,我想要的效果是66666666555555_11122233334444.txt,能再改一下吗?谢谢!
发表于 2020-11-29 21:32:14 | 显示全部楼层
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%a in ('dir /a /b *.txt') do (
  4.   for /f "tokens=1-5* delims=_ " %%A in ("%%~na") do (
  5.     echo ren "%%a" "%%F%%E_%%A%%B%%C%%D%%~xa"
  6.     ren "%%a" "%%F%%E_%%A%%B%%C%%D%%~xa"
  7.   )
  8. )
  9. pause
  10. exit /b
复制代码
 楼主| 发表于 2020-11-29 21:37:44 | 显示全部楼层
回复 6# flashercs


    现在提示找不到文件了
发表于 2020-11-29 21:48:50 | 显示全部楼层
回复 1# gzjhong
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  3.     for /f "tokens=1-6 delims=_ " %%a in ("%%~ni") do (
  4.         ren "%%i" "%%f%%e_%%a%%b%%c%%d%%~xi"
  5.     )
  6. )
复制代码
 楼主| 发表于 2020-11-29 22:00:29 | 显示全部楼层
回复 8# Batcher


    还是不行 ,555555还是没到前面来,和之前一样
 楼主| 发表于 2020-11-29 22:04:27 | 显示全部楼层
应该是我的问题,我认真测试一下,谢谢你
发表于 2020-11-29 22:11:30 | 显示全部楼层
回复 9# gzjhong


    请把你测试用的bat和txt文件打包压缩传上来我试试
 楼主| 发表于 2020-11-29 22:14:41 | 显示全部楼层
回复 10# gzjhong


这个是样本文件,能帮忙测试一下吗?文件名前面的位数有可能会少一点,但后面的年月日和时间是固定位数的,134331是时间,20190722是年月日
 楼主| 发表于 2020-11-29 22:28:14 | 显示全部楼层
回复 11# Batcher


    是我的问题,我没有注意到我文件的细节,文件前面的位数不一样,所以导致结果也不一样,真抱歉!!!
发表于 2020-11-29 22:36:49 | 显示全部楼层
回复 12# gzjhong
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  4.     for /f "tokens=1-3 delims=_" %%a in ("%%~ni") do (
  5.         set "c1=%%a"
  6.         ren "%%i" "%%c%%b_!c1: =!%%~xi"
  7.     )
  8. )
复制代码
发表于 2020-11-29 23:36:08 | 显示全部楼层
哈哈哈不愧是大佬佩服
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 06:41 , Processed in 0.021395 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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