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

[文件操作] 批处理命令ren修改文件名为何出错?

  1. @echo off
  2. for /f "tokens=*" %%i in ('dir /b /ad') do (
  3. ren "%%i" "dfdfdf"
  4. )
复制代码
功能是把所在目录的所有文件夹,都改名 成dfdfdf
就不知道为什么会这样。。。

新^n 手,对批处理还是刚接触

我也是新手
一个文件夹里面不能出现两个名字相同的文件,文件夹,我觉得"dfdfdf"这个要写成变量比如"dfdfdf%time%"

TOP

对啊,竟然没想到,我改改,这个论坛真好,不然有问题都不知道问谁说去

TOP

怎么这样

TOP

本帖最后由 CrLf 于 2014-6-28 23:35 编辑

回复 4# 小怪才


    文件名不能含这些字符: \ / : * ? " < > |,而 %time% 和 %date% 中有 / 和 :,所以未处理不能直接用作文件名
    而且还有个问题,这么短的时间内对 time 两次取值不是很容易重复吗?
可以变通下用递增序号:
  1. @echo off
  2. for /f "tokens=*" %%a in ('dir /b /ad') do (
  3. set "oldName=%%i"
  4. set /a n+=1
  5. setlocal enabledelayedexpansion
  6. ren "!oldName!" "dfdfdf_!n!%%~xa"
  7. endlocal
  8. )
复制代码
其实可以不用脚本,这里键鼠操作反而比敲代码更快捷,分享一个技巧:
  1. 1、视窗中按类型排序,以便把文件夹集中到一起
  2. 2、鼠标拖选所有要更名的文件夹
  3. 3、对第一个文件夹按 F2 或在右键菜单里选重命名
  4. 4、输入新文件夹名,回车搞定
复制代码

TOP

回复 5# CrLf

ren "!oldName!" "dfdfdf_!n!%%~xa"
大侠,这一句 后面的 %%~xa 怎么看???


我百度了下,看到了个类似的,
将多个文件夹依次改名 成 B01、B02、B03...
代码如下:
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=*" %%i in ('dir /b /ad') do (
set /a a+=1
set b=00!a!
ren  "%%i"   "B!b:~-2!"
)
同样, 最后一行   ren  "%%i"   "B!b:~-2!"看不懂。。。 (感叹号!我可以理解,是那个变量延迟的原因)

TOP

%%~xa 是对 %%a 的扩展,翻到 for /? 第五页,脚本里的 %%a 相当于命令行下一个 %a,知道这个一看就懂了...
!b:~-2! 是变量偏移的用法,翻到 set /? 第三、四页,有详细的例子

TOP

回复 6# 小怪才


批处理命令set截取字符详解
http://bbs.bathome.net/thread-996-1-1.html

批处理命令set变量字符截取点点通
http://bbs.bathome.net/thread-40-1-1.html

批处理命令set截取字符练习工具
http://bbs.bathome.net/thread-1149-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 7# CrLf


    哦,还有就是你前面都没定义%%a,怎么就直接拿来用了?
一时兴起,钻进去,云里雾里。。。

TOP

回复 9# 小怪才


    笔误,已修改~

TOP

返回列表