[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]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
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 14# zhao3


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

TOP

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

TOP

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

TOP

回复 11# CrLf


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

楼主给人的赶脚,不像是对批处理一点都不会的人啊,顶楼能贴出代码,知道tree,知道dir遍历

TOP

回复 10# apang


    楼上是出于善意,但建议简单注明,因为不懂批处理的人看不懂你的考虑呀...

TOP

回复 5# zhao3


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

这样做完全是为安全考虑,楼主勿需抱怨“没有动静”。假如给你的是一段全盘格式化的代码,那动静可大了

TOP

3#代码需要去掉echo
4#代码我测试就没问题。只是只能对子目录的文有效,对当前一级无效。

TOP

测试失败,是不是我的系统的问题,我的win2003.

TOP

好的,就是改D:\test目录下的子目录中的文件名?我测试下。

TOP

回复 5# zhao3


    4楼的那个代码放在桌面上执行试试
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

3#的程序,执行后没有任何动静,但输出的代码,我在CMD中手动输入,却可以成功改名。。
4#的程序,执行后,要改名的文件没有动静,.bat文件的名称或在不断的更改。

TOP

本帖最后由 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. )
复制代码
1

评分人数

    • zhao3: 真达人~~!技术 + 1

TOP

  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
复制代码

TOP

cd F:\a

Get-ChildItem -Recurse -File |ForEach-Object { Rename-Item -Path $_.FullName   -NewName  ($_.BaseName + $_.Name)}

TOP

返回列表