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

[文件操作] 批处理如何删除文件夹中多余目录?

各位大仙你们好!我的这个问题比较繁琐,烦劳热心人帮我编写一个程序来解决下面问题。
我现在手头有一个报表,报表的目录格式如下:
-201001
    |-20100101
                |-5002
                |-5003
                |-5004
                |-5034
                 .....
    |-20100102
      ... ...
其中5002,5003,5004等均为文件夹名称(5002等每个文件夹中有一个文件,且5002,5003,等文件夹中文件不会重名),5002,5003,5004为20100101的子目录,20100101又为201001的子目录,我想通过批处理将5002,5003,...下的文件拷贝至20100101下,然后删除5002,5003,...等文件夹。
----
后注:20100102目录结构同20100101相同,总共能到20101017,这些文件夹要实现的功能与20100101相同,如果能通过批处理一步实现所有文件夹得功能,那就更感谢了!!!!!

放在201001文件夹下运行
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b/ad') do (
  3.   cd /d "%~dp0%%i"
  4.   for /f "delims=" %%j in ('dir /b/ad') do (
  5.     move /y "!cd!\%%j\*" "!cd!" && rd "!cd!\%%j" /q/s
  6.   )
  7. )
  8. pause
复制代码
---学无止境---

TOP

我也试了一下:
  1. ::放在与201001同一级目录;
  2. ::只有最底层目录包含文件且只有一个文件;
  3. ::工作流程: 找到那一个文件,移动到到上一级,删除那一个文件原来所在的目录(非空则不删除)
  4. @echo on
  5. for /f "tokens=* delims=" %%a in ('dir/b/s/a-d .\201001\') do (
  6. move "%%a" "%%~dpa.\..\"
  7. rd "%%~dpa"
  8. )
  9. ::pause
复制代码
  1. ::放在与201001同一级目录;
  2. ::只有最底层目录包含文件可以有多个文件件;
  3. ::工作流程: 找到那一个文件,连同和它同级的所有文件\夹移动到到上一级,删除那一个文件原来所在的目录(非空则不删除)
  4. @echo on
  5. for /f "tokens=* delims=" %%a in ('dir/b/s/a-d .\201001\') do (
  6. move "%%~dpa.\*.*" "%%~dpa.\..\"
  7. rd "%%~dpa"
  8. )
  9. ::pause
复制代码

[ 本帖最后由 hfg1977 于 2010-10-15 22:58 编辑 ]

TOP

回复 3楼 的帖子

所有的代码都顶格写,这样不太好吧?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

RE: 4
在某些情况下一些命令不顶格会出现莫名的错误,
以前遇到过, 除非非常复杂的嵌套,不必追求.

TOP

回复 5楼 的帖子

好喜欢你们的代码,简单有效!~
退格是否真的会在某些情况下发生错误?
我今天郁闷了一天,因为我把以前的代码优化了一下,第一次尝试把它们全部退格了,同时可能还改了一些其他命令,但许多原来执行很正常的命令整体上都出现了错误,害得我不停地测试和修改,真不知道是否与此有关???
从另外一个角度考虑,批处理是以行进行的,同时意味着某些命令以每行第一个字符作为判断,退格与顶格之间的差别在于空格上……

TOP

缩进不会导致错误,至少我写代码这么多年来没遇到过。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 7楼 的帖子

在使用全局变量延迟的时候变量用叹号括起来,但以前我只在部分FOR中用叹号,许多情况下用百分号。刚才我把所有变量(系统变量除外)全部改成叹号又好了,但以前不改也可以正确执行,为啥呢?

TOP

拿代码来
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 9楼 的帖子

晕,早已改得面目全非了,现在还在改!~

TOP

那就与7楼无关
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

非常感谢各位大仙的指教,但是均不能实现我的功能

现在我上传我的文件,烦劳大仙们帮我看看!下载后将txt缀修改为rar,然后解压

TOP

TOP

回复 5楼 的帖子

Shell的here doc会有问题,但是BAT不会出现你说的问题。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 12楼 的帖子

请把它更新到顶楼
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表