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

将zm900612兄的代码修改一下就可以了,下面的代码在你给出的示例文件夹中测试通过,只要将代码分别放到示例文件夹123456里的1和3的文件夹里运行就OK了,并且具有通用性,只要你的文件结构符合你所说的要求就能行,而且两个要求都能符合(其实是一样的)。
  1. @echo off
  2. for /d %%a in (*) do (   
  3. for /f "delims=" %%b in ('dir /a /b "%%a"') do attrib -s -h "%%b"&&move /y "%%a\%%b" .\
  4. rd "%%a"
  5. )
  6. pause
复制代码

TOP

本帖最后由 yjstone 于 2011-5-1 21:16 编辑

简单啦,把批处理放在123456文件夹,连续运行,每运行一次就会减少一级目录,直到你满意为止。至于错误提示估计是这一句:attrib -s -h %%a 。我忘记加双引号了,当遇到有空格的文件或文件夹时报错,已在原代码加上了。

TOP

本帖最后由 yjstone 于 2011-5-1 22:53 编辑

我估计你是想保留123456目录下的一级子目录下的目录和文件,然后在123456目录下运行批处理来达到上面你所说的目的吧,那试试下面的代码:
  1. @echo off
  2. for /d %%a in (*) do (
  3. pushd "%%a"
  4. for /d %%b in (*) do (   
  5. for /f "delims=" %%c in ('dir /a /b "%%b"') do attrib -s -h "%%c"&&move /y "%%b\%%c" .\
  6. rd "%%b"
  7. )
  8. popd
  9. )
  10. pause
复制代码

TOP

返回列表