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

[文件操作] 批处理ren命令怎样为文件名添加指定字符串?

求助给位大神:比如我有N个文件,如,想要在后面加上字符“abc”,用命令ren *.xls *abc.xls 变成了,请问大家如何解决?thanks!!!

本帖最后由 jian123ch 于 2014-10-13 16:51 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /r %%i in (*.txt) do (
  4. set strfn=%%~ni%%~xi
  5. set strfna=!strfn:~0,-4!
  6. set strfnb=!strfn:~-4!
  7. set strfnew=!strfna!abc!strfnb!
  8. ren %%i !strfnew!
  9. )
复制代码

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. set str=abc
  3. for /f "delims=" %%a in ('dir /b *.xls') do ren "%%a" "%%~na!str!%%~xa"
  4. pause
复制代码

TOP

回复 2# jian123ch


    你这个代码根本没有测试过吧?

TOP

回复 3# 522235677


不需要变量延迟扩展
  1. @echo off
  2. set "str=abc"
  3. for /f "delims=" %%i in ('dir /b *.xls') do ren "%%i" "%%~ni%str%%%~xi"
复制代码

TOP

回复 4# DAIC

我测试过,不过是将*.xls换成了*.txt来测试的。

TOP

回复 6# jian123ch


你在什么操作系统里面测试的?
据我说知,ren命令的第二个参数不能是完整路径名。

TOP

本帖最后由 jian123ch 于 2014-10-13 17:02 编辑

回复 7# DAIC

您说的没错,我是直接在命令行下,直接敲入最后一句来验证ren 是否支持变量名。所以没有全部运行,现在已把原来的代码改了。

不过可以优化一下,优化后的代码为:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /r %%i in (*.txt) do (
  4. set strfn="%%~ni"abc"%%~xi"
  5. ren %%i !strfn!
  6. )
复制代码

TOP

回复 8# jian123ch


    ren的第一个参数也需要加双引号,否则无法处理包含空格的文件名。

TOP

回复 5# DAIC


    开始我也是这么想,后来发现有问题呢,加延迟就好了

TOP

回复 10# 522235677


    有什么问题?

TOP

回复 9# DAIC

谢谢指点。

TOP

返回列表