Board logo

标题: [文件操作] [已解决]BAT批处理怎样把当前目录下的子目录中的文件加上目录名? [打印本页]

作者: zhao3    时间: 2014-5-10 20:48     标题: [已解决]BAT批处理怎样把当前目录下的子目录中的文件加上目录名?

本帖最后由 zhao3 于 2014-5-13 23:51 编辑

A\11.txt
A\22.txt
B\11.txt
B\22.txt
C\11.txt
C\22.txt
加上文件名后, 变成
A\A11.txt
A\A22.txt
B\B11.txt
B\B22.txt
C\C11.txt
C\C22.txt
我在网上找到了一个进入目录后,可以加上目录名的代码,我想要一个遍历当前目录下所有子目录,并在文件前加上文件名。
这是不能遍历的代码:
  1. @echo off
  2. set n=%cd%
  3. :aaa
  4. if not "%n:\=%"=="%n%" set "n=%n:*\=%" & goto aaa
  5. for /f "delims=" %%a in ('dir /a-d /b *.*') do ren "%%a" "%n%_%%a"
  6. pause & exit
复制代码

作者: softy    时间: 2014-5-10 21:25

cd F:\a

Get-ChildItem -Recurse -File |ForEach-Object { Rename-Item -Path $_.FullName   -NewName  ($_.BaseName + $_.Name)}
作者: apang    时间: 2014-5-10 21:39

  1. @echo off
  2. pushd "d:\test\"
  3. for /f "delims=" %%a in ('dir /a-d /b /s *.*') do (
  4.     for %%b in ("%%a\..") do echo,ren "%%a" "%%~nxb_%%~nxa"
  5. )
  6. pause
复制代码

作者: CrLf    时间: 2014-5-10 22:33

本帖最后由 CrLf 于 2014-5-10 22:35 编辑
  1. @echo off
  2. pushd "d:\test"
  3. for /r /d %%a in (*) do (
  4.     for %%b in ("%%a\*") do ren "%%b" "%%~nxa%%~nxb"
  5. )
复制代码

作者: zhao3    时间: 2014-5-10 22:39

3#的程序,执行后没有任何动静,但输出的代码,我在CMD中手动输入,却可以成功改名。。
4#的程序,执行后,要改名的文件没有动静,.bat文件的名称或在不断的更改。
作者: Batcher    时间: 2014-5-10 22:41

回复 5# zhao3


    4楼的那个代码放在桌面上执行试试
作者: zhao3    时间: 2014-5-10 22:42

好的,就是改D:\test目录下的子目录中的文件名?我测试下。
作者: zhao3    时间: 2014-5-10 22:43

测试失败,是不是我的系统的问题,我的win2003.
作者: zhanglei1371    时间: 2014-5-11 11:47

3#代码需要去掉echo
4#代码我测试就没问题。只是只能对子目录的文有效,对当前一级无效。
作者: apang    时间: 2014-5-11 17:51

回复 5# zhao3


因为文件改名、删除都属于危险性的操作,所以在ren前加上echo,确认没有问题删掉echo即可

这样做完全是为安全考虑,楼主勿需抱怨“没有动静”。假如给你的是一段全盘格式化的代码,那动静可大了
作者: CrLf    时间: 2014-5-11 18:05

回复 10# apang


    楼上是出于善意,但建议简单注明,因为不懂批处理的人看不懂你的考虑呀...
作者: apang    时间: 2014-5-11 19:48

回复 11# CrLf


    个人认为,对批处理有一点基本常识的人,注不注明都是一样的,用点心就知道怎么回事。

楼主给人的赶脚,不像是对批处理一点都不会的人啊,顶楼能贴出代码,知道tree,知道dir遍历
作者: zhao3    时间: 2014-5-12 16:55

四楼的程序,我在另一台电脑上执行成功,当时就在想,高手在发出前肯定会测试的,只是没有想到真的是系统出现了问题。谢谢您。
作者: zhao3    时间: 2014-5-12 17:00

回12楼,我是一名化学教师,只是对电脑比较兴趣,代码之类的,只会看一些很直观的简单的,比如极其简单的网页代码,asp代码。
tree命令是十几前考全国计算机等级考试所必须的啊。其实我还会copy,move,rename,dir,哈哈。。。。
这里的环境太好了,大家都是这么热心的技术控,膜拜~~~!
谢谢大家,谢谢CCTV、BATTV、CCAV、MTV……
作者: DAIC    时间: 2014-5-12 18:07

回复 14# zhao3


    问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2