level 1
我想在*.*文件名的前或后加入另一串字符,求高手赐教如何完成。
拜谢!小弟新手,越详细越好。
2010年11月06日 08点11分
1
level 6
@echo off
for %%a in (*.*) do (
rem 获取目录下所有文件的全名
for "delims=. tokens=1-2" %%b in (%%a) do (
rem 以.为分隔符将文件分割为两份,如a.txt会被分为a和txt两份
rem 并取第一份和第二份分别赋值给%%b与%%b后的%%c
set filename=%%a
rem 将filename变量指定为第一次获取时的文件全名
renname %filename% GGGG%%bGGGG.%%c
rem renname的语法是:renname+文件名+更改后的文件名,所以只能这样了
)
)
则在该批处理下的文件都会被重命名为GGGG*GGGG.*
不能在cmd中运行!
在cmd中请将%%a与%%b改为%a与%b,则%cd%目录下的文件都会被重命名。
2010年11月06日 12点11分
2
level 1
for /f "delims=" %%a in ('dir /a-d /b /on') do ren "%%a" "str%%a"
::把那个str替换成字符就行,大概是这样吧。。。。。
2010年11月06日 13点11分
3
level 1
不过2楼的也有bug,某些特殊文件名会出错,比如n1.n2.n3.a
2010年11月06日 13点11分
6
level 6
发现一个重大bug 修改下
@echo off
for %%a in (*.*) do (
rem 获取目录下所有文件的全名,并输入名单.txt
if not %%a==名单.txt (
echo %%a >>名单.txt
)
for /f "delims=. tokens=1,2" %%b in (名单.txt) do (
rem 获取名单,并以.为分隔符将文件全名分割为两份,如a.txt会被分为a和txt两份
rem 并取第一份和第二份分别赋值给%%b与%%b后的%%c
rename "%%b.%%c" "GGGG%%bGGGG.%%c"
rem rename的语法是:rename+文件名+更改后的文件名,所以只能这样了
)
del 名单.txt
2010年11月06日 13点11分
8
level 1
for /f "delims=" %%a in ('dir /a-d /b /on') do echo "%%a" "【】%%~na【】~xa"
::这样应该没问题了,楼主把【】替换成需要的字符就行
2010年11月06日 13点11分
9
level 1
for /f "delims=" %%a in ('dir /a-d /b /on') do ren "%%a" "【】%%~na【】~xa"
::我承认笔误。。。。笔误,不是echo是ren
2010年11月06日 13点11分
10
level 6
LS你就是个大悲剧,连扩展名都改了,人家只要改的是标识名不是扩展名啊,连扩展名都改了你还要别人一个一个去改回来才能用文件?????
而且你最后那个~xa可以去掉
2010年11月06日 13点11分
11
level 1
回复:10楼
回复:11楼
非常感谢,始终是新手,没都看懂,我再研究研究。
2010年11月06日 14点11分
13
level 1
回11楼,扩展名就是%~xa呀,比如1.txt,%~na=1,%~xa=.txt,所以%~nastr%~xa=1str.txt
虽然我初学,但是正因为如此,所以发帖之前都是做过试验的,以免发错误人。不信的话可以自己试试么。。。。。
2010年11月06日 14点11分
14
level 1
等等,我的也有问题!看来刚才测试的时候搞混了,11楼,我认错。。。
2010年11月06日 14点11分
16
level 1
回复:14楼
你的能用,就是要把最后的~xa改成%%~xa,谢谢哇!
2010年11月06日 14点11分
17
level 1
不会吧。。。。那为什么我自己机子上测试又出错了。。。。多了---a--c---出来,搞不明白是什么
所以重写了一个保证不出错的,就是效率低点:
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /a-d /b /on') do (
set n=%%~na
set x=%%~xa
echo "%%a" "!n!str!x!"
pause)
2010年11月06日 15点11分
18
level 1
高手们,新问题来了。能把它做完整点吗?即把它做成能够选择插入部分放源文件名前还是放后,或者是前后都放,以及可以直接输入要插入的内容。
PS.我承认我很无赖,但我自己真的无能为力
2010年11月06日 15点11分
19
level 1
好像知道怎么回事了,因为我发帖前第一次测试时,添加的字符是数字:
for /f "delims=" %%a in ('dir /a-d /b /on') do ren "%%a" "%%~na1%%~xa"
而第二次测试时是用字母a,于是就成了%%~naa%%~xa,此时%%~naa不是指文件名+a,而是指文件名和文件属性。。。。。。
这要怎么解决呢?试过转义符号,虽然不会被误解为文件属性,可是却会在文件名上显示转义符号。。。。
2010年11月06日 15点11分
20