[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 gzjhong 于 2020-11-30 10:38 编辑

原格式:
111 222 3333 4444_555555_66666666
现在想改成:
66666666555555_11122233334444
请问能通过批处理实现吗?

  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. )
复制代码
微信:flashercs
QQ:49908356

TOP

flashercs 发表于 2020-11-27 08:01



    谢谢,用您提供的批处理,现在变成了66666666.txt_11122233334444555555,还是没达到效果,哪位大神能帮忙再改一下吗?

TOP

回复 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. )
复制代码
微信:flashercs
QQ:49908356

TOP

回复  gzjhong
flashercs 发表于 2020-11-29 20:59



    现在变成了66666666_11122233334444555555.txt,我想要的效果是66666666555555_11122233334444.txt,能再改一下吗?谢谢!

TOP

  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
复制代码
微信:flashercs
QQ:49908356

TOP

回复 6# flashercs


    现在提示找不到文件了

TOP

回复 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. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8# Batcher


    还是不行 ,555555还是没到前面来,和之前一样

TOP

应该是我的问题,我认真测试一下,谢谢你

TOP

回复 9# gzjhong


    请把你测试用的bat和txt文件打包压缩传上来我试试
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# gzjhong


这个是样本文件,能帮忙测试一下吗?文件名前面的位数有可能会少一点,但后面的年月日和时间是固定位数的,134331是时间,20190722是年月日

TOP

回复 11# Batcher


    是我的问题,我没有注意到我文件的细节,文件前面的位数不一样,所以导致结果也不一样,真抱歉!!!

TOP

回复 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. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

哈哈哈不愧是大佬佩服

TOP

返回列表