Board logo

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

作者: 279491611    时间: 2017-8-8 20:10     标题: [已解决]批处理判断文件夹下是否只有一个文件并把文件移到上一目录并删除空文件夹

本帖最后由 279491611 于 2017-8-8 21:54 编辑

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

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

作者: 279491611    时间: 2017-8-8 21:53

回复 2# zhanglei1371


    谢谢帮助,果然管用。
作者: Nsqs    时间: 2017-8-8 23:16

本帖最后由 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}}"
复制代码
一行




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2