批量 批处理把子文件夹的文件移动到上级父目录中

原来的文件的存放方式如下:C:│├─a│├─1││1.pdf│││├─2││2.pdf│││├─3││3.pdf│││└─4│4.pdf│├─b│├─1││1.pdf││... 原来的文件的存放方式如下:

C:

├─a
│ ├─1
│ │ 1.pdf
│ │
│ ├─2
│ │ 2.pdf
│ │
│ ├─3
│ │ 3.pdf
│ │
│ └─4
│ 4.pdf

├─b
│ ├─1
│ │ 1.pdf
│ │
│ ├─2
│ │ 2.pdf
│ │
│ ├─3
│ │ 3.pdf
│ │
│ └─4
│ 4.pdf

└─c
├─1
│ 1.pdf

├─2
│ 2.pdf

├─3
│ 3.pdf

└─4
4.pdf
需要达到移动后的效果如下:
C:

├─a
│ 1.pdf
│ 2.pdf
│ 3.pdf
│ 4.pdf

├─b
│ 1.pdf
│ 2.pdf
│ 3.pdf
│ 4.pdf

└─c
1.pdf
2.pdf
3.pdf
4.pdf
展开
 我来答
splashchaos
推荐于2017-12-15 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3342
采纳率:0%
帮助的人:3670万
展开全部

假设你的目标目录是c:\aaa(这个可以修改),下面有a,b,c等子目录,而每个子目录下面有分别有1,2,3,4等文件,那么可以用下面的代码:

@echo off & setlocal enabledelayedexpansion

set tp=c:\aaa
for /f "delims=" %%a in ('dir /ad /b /s %tp%') do (
  set cp="%%~a"
  for /f "delims=" %%i in ('dir /ad /b !cp! ^| find /v /c ""') do (set /a cnt=%%i)
  if {!cnt!}=={0} (
    set up="%%~da%%~pa"
    echo move !cp!\*.* !up! 2>nul
    echo rd /s /q !cp! 2>nul
  )
)

endlocal & @echo on

测试通过后,可以把两个echo去除,就可具体执行了。

great啊哦哦
2013-07-31 · TA获得超过119个赞
知道答主
回答量:241
采纳率:0%
帮助的人:152万
展开全部
建个批处理文件,然后用move命令就可以了。具体语法看帮助move /?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yyykkkyyyy
2013-07-31 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3304万
展开全部
这种移到上层的是否会有同名文件?如果有,怎么处理? 那被移走文件的子文件夹是否删除?
更多追问追答
追问
没有同名文件 在a或b或n的文件夹下面的都有1,2,3,4的文件夹 只需移动到a或b下面 同时删除1,2,3,4文件夹
追答

我不认为你所写的是真实文件名,但实际上不可能处理c盘下所有文件夹的,所以文件夹名采用了列举形式

@echo off
cd/d "c:\"
echo 正在移动...
for %%i in (a b c)do (
   pushd "%%~i"
   for /f "delims=" %%j in ('dir/b/s/a-d')do (
    rem move "%%j" "%%i\"
    echo %%j =^> %%i)
   popd
   for /d %%k in (*)do (
     echo 删除文件夹 %%k
      rem rd "%%k"
))
pause

 本来已写的是实际操作代码,考虑到防误操作,改成仅显示,如认为正常,有两处rem去掉(move和rd之前的)再运行较可靠

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式