找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30721|回复: 3

[文件操作] 【已解决】求改错:为什么我的批量重命名把bat自身的名字也改了?

[复制链接]
发表于 2014-1-14 21:58:31 | 显示全部楼层 |阅读模式
本帖最后由 battab 于 2014-1-15 11:38 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f %%i in ('dir /b/a-d') do (if not "%%i"=="%%~nx0" (
  3. set /a num+=1
  4. set name=%%i
  5. ren %%i 图片!num!!name:~-4!))
复制代码
把这个批处理放到要重命名的文件夹中运行,结果会连批处理自己的名也改了,不知道怎么改,求解?
就差一个%,真是差之毫厘,缪之千里啊!以后得多加注意点。
多谢各位的热心回复!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-1-14 22:51:44 | 显示全部楼层
if not "%%i"=="%%~nx0" 多打一个%吧
试  if not "%%i"=="%~nx0"

评分

参与人数 1技术 +1 收起 理由
battab + 1 乐于助人!

查看全部评分

发表于 2014-1-15 10:00:38 | 显示全部楼层
建议不要把所有的代码都顶格写,要合理的使用缩进。

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%i in ('dir /b /a-d') do (
  4.     if not "%%i"=="%~nx0" (
  5.         set /a num+=1
  6.         set name=%%i
  7.         ren %%i 图片!num!!name:~-4!
  8.     )
  9. )
复制代码
发表于 2014-1-15 10:02:34 | 显示全部楼层
为了能够处理包含空格的文件名,可以改成这样:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d') do (
  4.     if not "%%i"=="%~nx0" (
  5.         set /a num+=1
  6.         set "name=%%i"
  7.         ren "%%i" "图片!num!!name:~-4!"
  8.     )
  9. )
复制代码

评分

参与人数 1技术 +1 收起 理由
battab + 1 谢谢!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 22:49 , Processed in 0.040178 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表