Board logo

标题: [文件操作] 【已解决】求助批处理文件名互换位置 [打印本页]

作者: gzjhong    时间: 2020-11-27 01:22     标题: 【已解决】求助批处理文件名互换位置

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

原格式:
111 222 3333 4444_555555_66666666
现在想改成:
66666666555555_11122233334444
请问能通过批处理实现吗?
作者: flashercs    时间: 2020-11-27 08:01

  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. )
复制代码

作者: gzjhong    时间: 2020-11-29 20:51

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



    谢谢,用您提供的批处理,现在变成了66666666.txt_11122233334444555555,还是没达到效果,哪位大神能帮忙再改一下吗?
作者: flashercs    时间: 2020-11-29 20:59

回复 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. )
复制代码

作者: gzjhong    时间: 2020-11-29 21:03

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



    现在变成了66666666_11122233334444555555.txt,我想要的效果是66666666555555_11122233334444.txt,能再改一下吗?谢谢!
作者: flashercs    时间: 2020-11-29 21:32

  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
复制代码

作者: gzjhong    时间: 2020-11-29 21:37

回复 6# flashercs


    现在提示找不到文件了
作者: Batcher    时间: 2020-11-29 21:48

回复 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. )
复制代码

作者: gzjhong    时间: 2020-11-29 22:00

回复 8# Batcher


    还是不行 ,555555还是没到前面来,和之前一样
作者: gzjhong    时间: 2020-11-29 22:04

应该是我的问题,我认真测试一下,谢谢你
作者: Batcher    时间: 2020-11-29 22:11

回复 9# gzjhong


    请把你测试用的bat和txt文件打包压缩传上来我试试
作者: gzjhong    时间: 2020-11-29 22:14

回复 10# gzjhong


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

回复 11# Batcher


    是我的问题,我没有注意到我文件的细节,文件前面的位数不一样,所以导致结果也不一样,真抱歉!!!
作者: Batcher    时间: 2020-11-29 22:36

回复 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. )
复制代码

作者: liyu963926475    时间: 2020-11-29 23:36

哈哈哈不愧是大佬佩服
作者: gzjhong    时间: 2020-11-30 10:39

谢谢两位老大,问题已解决!!!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2