对于bat / cmd来说,我是一个完全新手。 我可以通过谷歌的一点帮助做非常基础的! &安培;当我的意思是基本即时通讯xcopy,robocopy等。
我正在尝试编写一个代码,该代码将从当前文件夹中提取前5个字符&重命名子文件夹中的文件,但也使用当前日期后缀。
所以这基本上就是我想要做的事情。
W:\12345_folder
这是我要从中提取12345的主文件夹。
W:\12345_folder\subfolder
这是要重命名的文件的位置
子文件夹中文件的当前名称如下
file1.txt
file2.txt
file3.txt
重命名后,它们应如下所示
12345 file1 2014-10-02.txt
12345 file2 2014-10-02.txt
12345 file3 2014-10-02.txt
我所有的努力都是徒劳的。我可以用这个来获取日期。但它重命名整个文件名&不保留现有文件名。
for /f "tokens=1-5 delims=/ " %%d in ("%date%") do rename "*.txt" %%g%%f-%%e-%%d.txt
我也一直在玩这个:
for %%z in ("%cd%") do (
for %%a in ("%%~dpz%\.") do (
rename "**.txt" "%%~nxa-.txt"))
但是,这又会覆盖整个文件名,并且不会保留现有的文件名。
我必须再次强调我是一个完整的新手,所以要温柔和放松。非常感谢您的帮助。
答案 0 :(得分:0)
问题似乎与Windows中的RENAME命令有一些错误,特别是分配前缀和后缀(参见底部链接)。
我只做了部分答案,因为我无法将日期作为后缀使用。但是,这将允许您使用您选择的前缀(包括日期)为文件名添加前缀。
我试图让“日期作为后缀”解决方案正常工作,但我的cmd版本中的以下内容没有成功:
REN *.txt ????????????????abc.txt.x
REN *.x *
返回:名称无效
这是我的替代解决方案,添加前缀日期。对于第一批示例,请创建两个批处理文件:
renprefix.bat
%4
FOR %%v IN (%1) DO CALL %0 %1 %2 %%v GOTO:Part2
ATTRIB -h %2%1
GOTO End
:Part2
REN %3 %2%3
ATTRIB +h %2%3
:End
然后,在您的示例中使用上述批处理文件:
rendate.bat
for /f "tokens=1-5 delims=/ " %%d in ("%date%") do renprefix.bat *.txt %%g%%f-%%e-%%d
来源: http://www.lagmonster.org/docs/DOS7/z-ren1.html “4.添加前缀”