喋血街头2中文配音:用批处理给一系列文件该名

来源:百度文库 编辑:中科新闻网 时间:2024/04/28 03:29:45
请问如何在Dos下编写一个批处理文件,来给某一文件夹下的全部文本文件更名,结果使所有文本文件的文件名前加上一个2006?比如原来的文本文件名为123.txt,运行批处理后的结果为2006123.txt.先谢了.
如果直接使用命令ren *.txt 2006*.txt是不行的,比方说如果原文件名是abcdefg.txt,使用该命令之后文件名却变成了2006efg.txt了,而我需要的结果是2006abcdefg.txt 啊。

谢谢天下有敌,这个问题我昨天给逼得没法,已经用C++写了段程序解决了.不过我还是想问问在for %i in (C:\*.txt) do @ren "%i" "2006%~nxi" 中的~nxi代表的是什么意思?

另外,你给出的这个命令似乎还有个问题,我在f盘下新建了两个文本文件分别命名为200506.txt和200605.txt,我将你给出的这个命令改为for %i in (f:\*.txt) do @ren "%i" "2006%~nxi"
,结果发现这两个文件名分别被修改成了20062006200506.txt和2006200605.txt,请问这是什么原因呢?
ksdzt
2006/05/28

对啊
是不能才用这么"通"的通配符

当你要处理C:\下的*.txt时
可以在DOS下输入
for %i in (C:\*.txt) do @ren "%i" "2006%~nxi"
就好了
其中引号的存在是为了能够处理包含空格的文件名

如果是批处理的话
将其中的% 改成%%保存在.bat文件里就好哪个了
已测试

谢谢你提出的问题
我刚开始并没在意
我觉得这个问题的主要原因是这样的
for枚举txt文件后将它们重新命名为新的txt文件
这样的话呢新的文件名DOS以为是新的文件会继续枚举这个文件
这样就造成了两次的重命名
解决的办法有一个
就是先将txt重新明明为另外的扩展名
而后再改回来
@echo off
for %%i in (C:\*.txt) do @ren "%%i" "2006%%~ni.ttt"
ren C:\*.ttt *.txt
就好了
我上次测试的时候没注意你说的情况
真是对不起

你还问到%~nxi的意思
这是扩展变量的格式
n代表文件名
x代表扩展名
还有很多其他的格式
你可以参考for命令的帮助
在命令行输入for /?就可以看到

Ren *.* 123*.*
没试过,你先试下在用