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

[文件操作] [已解决]批处理如何替换/修改以指定字符分割的文件名中的指定字段

本帖最后由 pcl_test 于 2016-8-9 20:53 编辑

批处理如何文件名替换指定字段?望高手带我走上正途!
文件格式     2013-SA2-k30-0001-0001.jpg
年份,字母都会变,后面的3,4也会改变,就是需要把中间的K90修改成其他字符串。

例如:
2013-SA1-k30-0001-0009.jpg
2012-SA1-k30-0002-0011.jpg
.
.
.
2005-SA7-k30-9941-0007.jpg

目标:
2013-SA1-Y-0001-0009.jpg
2012-SA1-Y-0002-0011.jpg
.
.
.
2005-SA7-Y-9941-0007.jpg


我写的是:
  1. @echo off
  2. for %%i in (*.jpg) do (
  3.     for /f "tokens=3 delims=-." %%z in ("%%i") do (
  4. set  fn="%%z"
  5. set  fn=Y
  6. echo %%a-%%b-!fn!-%%c-%%d.jpg
  7.     )
  8. )
  9. pause
复制代码
意思就是第3行不管出现什么都改成我所指定的字符,错在哪里了?

  1. @echo off
  2. set fn=Y
  3. for %%i in (*.jpg) do (
  4.     for /f "tokens=1-5 delims=-" %%a in ("%%~ni") do (
  5. echo %%a-%%b-%fn%-%%d-%%e.jpg
  6.     )
  7. )
  8. pause
复制代码

TOP

回复 2# bailong360


    但是对改名是失效的,
  1.    @echo off
  2. set fn=K30
  3. for %%i in (*.jpg) do (
  4.     for /f "tokens=1-5 delims=-" %%a in ("%%~ni") do (
  5. ren %%a-%%b-%%c-%%d-%%e.jpg %%a-%%b-%fn%-%%d-%%e.jpg
  6.     )
  7. )
  8. pause
复制代码

TOP

@echo off
set fn=K30
set fn=Y
for %%i in (*.jpg) do (
    for /f "tokens=1-5 delims=-" %%a in ("%%~ni") do (
        ren %%a-%%b-%%c-%%d-%%e.jpg %%a-%%b-%fn%-%%d-%%e.jpg
    )
)
pause

TOP

回复 4# bailong360


    K30只是举个例子,万一是K50,我也得改成Y,谢谢你,我再想想。

TOP

回复 4# bailong360


    这个可以用的,谢谢。

TOP

回复 5# playinthesky

我的意思是,K30那一行完全是多余的,可以去掉
K30所在列的取值与程序无关

TOP

回复 7# bailong360


    对的,我刚刚尝试,是的,但是我看他们在写的时候,好像都是要赋值两次的么,看来对于具体数字而言是不用的。

TOP

回复 7# bailong360


   谢谢你,很感激。

TOP

返回列表