标题: [文件操作] 批处理命令ren修改文件名为何出错? [打印本页]
作者: 小怪才 时间: 2014-6-28 15:50 标题: 批处理命令ren修改文件名为何出错?
- @echo off
- for /f "tokens=*" %%i in ('dir /b /ad') do (
- ren "%%i" "dfdfdf"
- )
复制代码
功能是把所在目录的所有文件夹,都改名 成dfdfdf
就不知道为什么会这样。。。
新^n 手,对批处理还是刚接触
作者: szl1123 时间: 2014-6-28 15:56
我也是新手
一个文件夹里面不能出现两个名字相同的文件,文件夹,我觉得"dfdfdf"这个要写成变量比如"dfdfdf%time%"
作者: 小怪才 时间: 2014-6-28 16:51
对啊,竟然没想到,我改改,这个论坛真好,不然有问题都不知道问谁说去
作者: 小怪才 时间: 2014-6-28 16:55
怎么这样
作者: CrLf 时间: 2014-6-28 17:31
本帖最后由 CrLf 于 2014-6-28 23:35 编辑
回复 4# 小怪才
文件名不能含这些字符: \ / : * ? " < > |,而 %time% 和 %date% 中有 / 和 :,所以未处理不能直接用作文件名
而且还有个问题,这么短的时间内对 time 两次取值不是很容易重复吗?
可以变通下用递增序号:- @echo off
- for /f "tokens=*" %%a in ('dir /b /ad') do (
- set "oldName=%%i"
- set /a n+=1
- setlocal enabledelayedexpansion
- ren "!oldName!" "dfdfdf_!n!%%~xa"
- endlocal
- )
复制代码
其实可以不用脚本,这里键鼠操作反而比敲代码更快捷,分享一个技巧:- 1、视窗中按类型排序,以便把文件夹集中到一起
- 2、鼠标拖选所有要更名的文件夹
- 3、对第一个文件夹按 F2 或在右键菜单里选重命名
- 4、输入新文件夹名,回车搞定
复制代码
作者: 小怪才 时间: 2014-6-28 22:08
回复 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!"看不懂。。。 (感叹号!我可以理解,是那个变量延迟的原因)
作者: CrLf 时间: 2014-6-28 22:45
%%~xa 是对 %%a 的扩展,翻到 for /? 第五页,脚本里的 %%a 相当于命令行下一个 %a,知道这个一看就懂了...
!b:~-2! 是变量偏移的用法,翻到 set /? 第三、四页,有详细的例子
作者: Batcher 时间: 2014-6-28 23:20
回复 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
作者: 小怪才 时间: 2014-6-28 23:24
回复 7# CrLf
哦,还有就是你前面都没定义%%a,怎么就直接拿来用了?
作者: CrLf 时间: 2014-6-28 23:36
回复 9# 小怪才
笔误,已修改~
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |