最好用bat批处理为文件名前加上文件夹名的前缀!
如下图所示:即变更为“以所在文件夹名为前缀”的新文件名。最好写批处理,即处理目标为A文件夹。先给100,完美实现后在追加100,共200.date521可是可以,但如果还...
如下图所示:
即变更为 “以所在文件夹名为前缀”的新文件名。
最好写批处理,即处理目标为 A 文件夹。
先给100,完美实现后在追加100,共200.
date521 可是可以,但如果还有3级目录,就不行了啊。千羽之城 不行啊。 忆林子 是固定读取D盘吗,能否自动获取bat所在文件路径啊。 展开
即变更为 “以所在文件夹名为前缀”的新文件名。
最好写批处理,即处理目标为 A 文件夹。
先给100,完美实现后在追加100,共200.
date521 可是可以,但如果还有3级目录,就不行了啊。千羽之城 不行啊。 忆林子 是固定读取D盘吗,能否自动获取bat所在文件路径啊。 展开
3个回答
展开全部
以下这个批处理就可以解决你的问题。
注意,这是我2008年写的批处理,如果你要用的话,你要先看懂我的代码。
几乎都有注释了,应该难度不大。你只需要修改一下
开头的那行
dir d:\*.txt /s /a-d /b>>tmp.txt
跟后面的
echo ren "%%a" "!new_name!"
就好了
关于这个问题的解决思路,你可以参考一下我百度空间里的这篇文章。
http://hi.baidu.com/%D2%E4%C1%D6%D7%D3/blog/item/40752995f58fc80e7af4800b.html
@echo off
rem 生成临时列表文件
dir d:\*.txt /s /a-d /b>>tmp.txt
rem 用for命令来读取那个由dir命令生成的列表文件
FOR /F "tokens=*" %%a IN (
'more tmp.txt'
) DO (
rem 用Setlocal来启用环境变量延迟功能
Setlocal EnableDelayedExpansion
rem 取得路径包括了最后一个斜线\
set tempPath=%%~dpa
rem 把路径中的最后一个斜线去掉
set tempPath=!tempPath:~,-1!
rem 在for命令中来扩展取得路径名
FOR %%A IN (
"!tempPath!"
) DO (
rem 扩展取得上级目录名
set filePath=%%~nA
rem 新的文件名为: 上级目录名文件名
set new_name=!filePath!-%%~nxa
rem 重命名文件名(为了安全,这里只是用echo把命名的
rem 语句显示出来)
rem 如果要进行重命名的话,把echo 去掉就可以了
echo ren "%%a" "!new_name!"
)
ENDLOCAL
)
rem 删除临时文件
del tmp.txt /q 1>nul 2>nul
pause
注意,这是我2008年写的批处理,如果你要用的话,你要先看懂我的代码。
几乎都有注释了,应该难度不大。你只需要修改一下
开头的那行
dir d:\*.txt /s /a-d /b>>tmp.txt
跟后面的
echo ren "%%a" "!new_name!"
就好了
关于这个问题的解决思路,你可以参考一下我百度空间里的这篇文章。
http://hi.baidu.com/%D2%E4%C1%D6%D7%D3/blog/item/40752995f58fc80e7af4800b.html
@echo off
rem 生成临时列表文件
dir d:\*.txt /s /a-d /b>>tmp.txt
rem 用for命令来读取那个由dir命令生成的列表文件
FOR /F "tokens=*" %%a IN (
'more tmp.txt'
) DO (
rem 用Setlocal来启用环境变量延迟功能
Setlocal EnableDelayedExpansion
rem 取得路径包括了最后一个斜线\
set tempPath=%%~dpa
rem 把路径中的最后一个斜线去掉
set tempPath=!tempPath:~,-1!
rem 在for命令中来扩展取得路径名
FOR %%A IN (
"!tempPath!"
) DO (
rem 扩展取得上级目录名
set filePath=%%~nA
rem 新的文件名为: 上级目录名文件名
set new_name=!filePath!-%%~nxa
rem 重命名文件名(为了安全,这里只是用echo把命名的
rem 语句显示出来)
rem 如果要进行重命名的话,把echo 去掉就可以了
echo ren "%%a" "!new_name!"
)
ENDLOCAL
)
rem 删除临时文件
del tmp.txt /q 1>nul 2>nul
pause
展开全部
@echo off
for /f "delims=" %%c in ('dir /b /ad /s') do (
for /f "delims=" %%d in ('dir /b /a-d "%%c" 2^>nul') do ren "%%c\%%d" "%%~nxc-%%d"
)
setlocal enabledelayedexpansion
for /f "delims=" %%c in ('dir /b /a-d') do (
set fName=%%~dpc
for /f "delims=" %%d in ("!fName:~0,-1!") do if not "%%~fc"==%0 ren "%%c" "%%~nxd-%%c"
)
echo 收工!
pause>nul
------The end
-------批处理..放到跟A文件夹同级使用
不知这样算不算是完美实现?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off
for /f "delims=" %%i in ('dir /s/b/ad') do (
cd /d "%%i\"
for /f "delims=" %%k in ('dir /b *.txt') do (
ren "%%~fk" "%%~ni-%%~nxk"
)
)
exit
for /f "delims=" %%i in ('dir /s/b/ad') do (
cd /d "%%i\"
for /f "delims=" %%k in ('dir /b *.txt') do (
ren "%%~fk" "%%~ni-%%~nxk"
)
)
exit
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询