批处理修改文件名问题?

时间:2022-12-20 16:55:14
GG文件夹下有两千多个文件,文件名是
_GG200011.txt
_GG200021.txt
_GG200031.txt
.
.
.
_GG200091.txt
_GG2000101.txt
_GG2000111.txt
_GG2000121.txt
_GG200111.txt
.
.
.
_GG200511.txt
_GG200521.txt(都是以日期命名)
...

本想批量处理把文件名前的‘_’去掉,DOS下执行ren _GG200*.txt GG200*.txt 文件名全部变成GG2000xxx.txt

文件名全多了个0,现在文件名要去掉一个‘0’代码要什么写,请教大虾!

8 个解决方案

#1


用ACDSee看看。

#2


把下面的代码保存为BAT文件,放到你说的那个GG文件夹下面执行。

[code=BatchFile]
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /a-d /b GG*.txt') do (
set na=%%a
set nb=!na:~4,12!
set na=!na:~0,3!
ren %%a !na!!nb!
)
setlocal disabledelayedexpansion
[/code]

#3


佛爱我羊


能不能讲下代码的意思,好象执行后也没变化。

#4


引用 1 楼 tangt 的回复:
用ACDSee看看。


具体什么操作?谢谢!

#5


引用 3 楼 hbhuo2008 的回复:
佛爱我羊 


能不能讲下代码的意思,好象执行后也没变化。


不会吧,执行后没变化?除非你提供的数据是虚假的,呵呵。

这个代码会依次读取dir当前目录下所有GG开头的TXT文件名,然后截取每个文件名的前三个字符和第四个字符以后的字符,然后合并,再用合并后的名字替换以前的名字。

比如:
GG20000101.txt 会被截取成 GG2 + 000101.txt 
ren GG20000101.txt GG2000101.txt

这样不就每个文件名会去掉一个0么

#6


另外你要把这个批处理文件放到你所说的那个GG文件夹下面运行,放别的地方不行。

#7


刚刚在CN-DOS看到楼主的问题被另一种方法解决了
思路是用set命令进行变量替换
跟2楼的方法异曲同工^_^

#8


引用 6 楼 Forever_Young 的回复:
另外你要把这个批处理文件放到你所说的那个GG文件夹下面运行,放别的地方不行。



哈哈!问题解决了,谢谢!

#1


用ACDSee看看。

#2


把下面的代码保存为BAT文件,放到你说的那个GG文件夹下面执行。

[code=BatchFile]
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /a-d /b GG*.txt') do (
set na=%%a
set nb=!na:~4,12!
set na=!na:~0,3!
ren %%a !na!!nb!
)
setlocal disabledelayedexpansion
[/code]

#3


佛爱我羊


能不能讲下代码的意思,好象执行后也没变化。

#4


引用 1 楼 tangt 的回复:
用ACDSee看看。


具体什么操作?谢谢!

#5


引用 3 楼 hbhuo2008 的回复:
佛爱我羊 


能不能讲下代码的意思,好象执行后也没变化。


不会吧,执行后没变化?除非你提供的数据是虚假的,呵呵。

这个代码会依次读取dir当前目录下所有GG开头的TXT文件名,然后截取每个文件名的前三个字符和第四个字符以后的字符,然后合并,再用合并后的名字替换以前的名字。

比如:
GG20000101.txt 会被截取成 GG2 + 000101.txt 
ren GG20000101.txt GG2000101.txt

这样不就每个文件名会去掉一个0么

#6


另外你要把这个批处理文件放到你所说的那个GG文件夹下面运行,放别的地方不行。

#7


刚刚在CN-DOS看到楼主的问题被另一种方法解决了
思路是用set命令进行变量替换
跟2楼的方法异曲同工^_^

#8


引用 6 楼 Forever_Young 的回复:
另外你要把这个批处理文件放到你所说的那个GG文件夹下面运行,放别的地方不行。



哈哈!问题解决了,谢谢!