找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24410|回复: 3

[文件操作] [已解决]批处理判断文件夹下是否只有一个文件并把文件移到上一目录并删除空文件夹

[复制链接]
发表于 2017-8-8 20:10:09 | 显示全部楼层 |阅读模式
本帖最后由 279491611 于 2017-8-8 21:54 编辑

求助 批处理判断文件夹下是否只有一个文件并把文件移到上一目录并删除空文件夹,如果多于一个文件或有子目录的则不做任何处理。
例如: d:\test\  目录下有很多文件夹,这些文件夹里有的只有一个文件,有的是空文件夹,有的有多个文件,还有有可能有子目录。
比如 d:\test\ A   是空文件夹,d:\test\B  里面只有一个文件   d:\test\ C里面有多个文件。
现在想要变成 d:\test\  只有B文件夹里面的文件和C文件夹及其里面的文件。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2017-8-8 21:32:13 | 显示全部楼层

  1. @echo off & setlocal enabledelayedexpansion
  2. REM pushd c:\测试目录
  3. for /d %%i in (*) do (
  4. set n=%%~dpni
  5. for /f "usebackq tokens=* delims=" %%a in (`dir /a-d /b /s "%%i"`) do (
  6. set /a s+=1
  7. set m=%%a
  8. )
  9. if !s! equ 1 (
  10.         move "!m!" "!n!\.."
  11.         rd "!n!"
  12.         )
  13. set s=0
  14. pause
  15. )
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2017-8-8 21:53:30 | 显示全部楼层
回复 2# zhanglei1371


    谢谢帮助,果然管用。
发表于 2017-8-8 23:16:22 | 显示全部楼层
本帖最后由 Nsqs 于 2017-8-8 23:20 编辑

回复 3# 279491611
  1. powershell -c "dir -Dir|foreach{if([System.IO.Directory]::GetFiles($_.FullName).Count -eq 1){Move-Item -Force ($_.FullName+'\*.*') '.';Remove-Item -Recurse -Path $_.FullName}}"
复制代码
一行

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 00:14 , Processed in 0.020957 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表