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

[文件操作] [已解决]请教批处理删除子文件夹保留子文件夹里的文件

比如我D盘有很多文件夹 ,A文件夹 B文件夹 C文件夹 等等,每个文件夹下又有很多子文件夹,A下有A1 、A2 。B下又B1 、B2文件夹。A1、B1文件夹下面可能还有子文件夹。我想把所有子文件夹都删掉,但保留文件,文件格式就几种常见的图片 文档之类的。比如A文件夹下所有文件包括子文件夹里的文件都保存在A文件夹下,子文件夹都删掉。想求一个批处理,运行后的效果就是 只保留 A、B 、C这些一级文件夹,里面的子文件夹都删掉,文件保留。
@echo off
for /r . %%a in (*.jpg *.doc) do if exist "%%a" move /y "%%a" .

上面这个批处理 放在A文件夹下,可以将A文件夹里的子文件夹内容移动到A目录下。但没有删除子文件夹的功能。也不能处理所有文件夹,我想处理所有的文件夹,不知道应该怎么修改一下。  请大家指导一下,谢谢!!!
1

评分人数

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

回复 5# qixiaobin0715


    好的,谢谢。既然都推荐用pushd ,那就用pushd 吧

TOP

本帖最后由 qixiaobin0715 于 2022-2-13 10:24 编辑

回复 4# skyfxf
pushd popd兄弟俩挺友好的,可以省去许多麻烦。
  1. @echo off
  2. for /d %%i in (*) do (
  3.     pushd "%%i"
  4.     for /f "delims=" %%j in ('dir /s /b /ad^|sort /r') do (
  5.         copy "%%j\*.*"
  6.         rd /s /q "%%j"
  7.     )
  8.     popd
  9. )
  10. pause
复制代码
rd命令慎用,特别是直接放在D:\ 分区下。使用前备份好源文件,慎用慎用。
1

评分人数

TOP

回复 3# toyerspollors


    这个也只能在一个文件夹下生效,比如在A文件夹下成功。放在D盘根目录  就没任何反应。我想要的是 一个批处理  处理D盘下所有的文件夹,运行后只保留 D盘下第一层文件夹,别人给了我一个用 pushd命令的批处理,如下

    @echo off
    pushd "%~dp0"
    for /f "delims=" %%x in ('dir /a:d /b') do (
        pushd ".\%%x"
        for /r . %%a in (*.jpg *.doc) do if exist "%%a" move /y "%%a" .
        for /f "delims=" %%i in ('dir /ad /b /s ^|sort /r') do (
            rd "%%i">nul 2>nul &&if not exist %%i\ echo 成功删除:%%i
        )
        popd
    )
    pause

这个批处理可以达到目的,但是我觉得不用 pushd命令也可以做到这个效果,就是不知道怎么写

TOP

@echo off
(for /f "delims=" %%a in ('dir /b /s /ad') do (
        move /y "%%a\*.*" "%%a\.."&&rd %%a
))>nul 2>nul

for /f "delims=" %%i in ('dir /ad /b /s^|sort /r') do rd /q "%%i" 2>nul
pause


不知道你是想要这个效果吗?

TOP

现在删除空文件夹的命令也知道了  
@echo off
for /r . %%a in (*.jpg *.doc) do if exist "%%a" move /y "%%a" .

for /f "delims=" %%i in ('dir /ad /b /s ^|sort /r') do (

rd "%%i">nul 2>nul &&if not exist %%i\ echo 成功删除:%%i

)

pause

这样放到A 文件夹目录下  ,可以做到把A目录下所有子文件夹删除且保留文件。
但是我想 批量处理 D盘下单 ABC 等等所有文件夹  就不知道怎么修改了
应该是再加个循环就行了,可是就是弄不好

TOP

返回列表