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

[文件操作] 批处理FOR和SET联合应用更改文件名时为何报错?

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem 下面一行是原文件名中要替换的字符串
  4. set renname1=_DownG.com
  5. rem 下面是新文件名的字符串,要删除1,则留空
  6. set renname2=
  7. for /r . %%a in (*_DownG.com*) do (
  8. set hcy=%%a
  9. e:\tools\winrar.exe d "%%a" 下载站*.htm -r
  10. echo !hcy!
  11. ren "%%~a" "!hcy:%renname1%=%renname2%!")
  12. pause
复制代码
执行到 ren "%%~a" "!hcy:%renname1%=%renname2%!")
会语法错误~~~我那个找不出来。
下面这个是我现在正在用的,只能对当前目录进行操作。我想对子目录也操作,于是有了上面的代码。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem 下面一行是原文件名中要替换的字符串
  4. set renname1=_DownG.com
  5. rem 下面是新文件名的字符串,要删除1,则留空
  6. set renname2=
  7. for /f "delims=" %%a in ('dir /b *_DownG.com*') do (
  8. set hcy=%%a
  9. e:\tools\winrar.exe d "%%a" 下载站*.htm -r
  10. echo !hcy!
  11. ren "%%~a" "!hcy:%renname1%=%renname2%!")
  12. pause
复制代码
测试的时候要有 形如"新建 WinRAR 压缩_DownG.com文件.rar"的文件,(文件名有空格,无空格都要能运行这个批处理)。
希望高手帮我看看第一段代码的问题出在哪里。我估计是setlocal enabledelayedexpansion的问题,可是我不知道怎么修改。

[ 本帖最后由 hdzz 于 2011-2-22 11:18 编辑 ]

楼主是否考虑先改下标题呢?
技术问题请到论坛发帖求助!

TOP

感觉错误出在ren的第二个参数,第二个参数好像不能含有路径吧?把set hcy=%%a改为set hcy=%%~nxa试试。

[ 本帖最后由 weichenxiehou 于 2011-2-22 12:28 编辑 ]
看得多说得多,远比不上写得多。

TOP

分离路径、文件名~~~这一步很重要。
之前我忘记了。以为 这个 %%a 还是跟 只在当前目录运行的那个一样。
不知道该怎么感谢你了。
刚刚仔细试验了下。
比较好用。
呵呵。高兴啊,多谢楼上

TOP

返回列表