Board logo

标题: [文本处理] 【已解决】批处理文件夹提取和并列的提取的问题 [打印本页]

作者: duoduo200    时间: 2022-4-26 17:04     标题: 【已解决】批处理文件夹提取和并列的提取的问题

本帖最后由 duoduo200 于 2022-4-26 18:50 编辑

[img][/img]
各位大佬好!

请帮忙修改一下代码,该代码主要是提取文件夹下文件上来(如图箭头1我已经添加到右键里了)。在实际运用中发现一个致命问题,就是箭头2指向的文件夹  所在的文件夹,同时还有其他并列兄弟文件夹的话,一旦运行bat,就会把箭头2和并列文件夹里所有文件都提取到上层父文件夹下了。
为了便于理解我再举个例(其实就是上面的情况,换种说法):如果把该bat放在A文件夹下运行(A文件夹下有BC两个子文件夹,子文件下有若干文件),会同时提取BC里所有的文件到A文件夹下,但我只想要提取B文件夹或者C文件夹下的。

但按照逻辑分析,不指定文件夹,电脑也无法判断该提取哪个。
所以是否可以添加一个判断条件,如果A文件夹下只有一个子文件夹就提取该文件夹后并删除空文件夹,但如果存在两个或者以上的文件夹,就只提取当前文件夹(箭头2)下的文件。
  1. @echo off
  2. for /f "delims=" %%a in ('dir /a-d /b /s ') do (
  3. move "%%~a" ./ 2>nul
  4. )
复制代码
同样要有遍历、不能指定文件夹名称和路径。
作者: zaqmlp    时间: 2022-4-26 17:50

  1. @echo off
  2. if "%~1" equ "" exit
  3. if not exist "%~1\" (echo;Path Error Or Not Folder&pause&exit)
  4. for /f "delims=" %%a in ('dir /a-d/b/s "%~1\" 2^>nul') do (
  5.     echo;"%%a" --^> "%~dp1"
  6.     move "%%a" "%~dp1"
  7. )
  8. rem rd /s /q "%~1\"
  9. pause
  10. exit
复制代码

作者: duoduo200    时间: 2022-4-26 18:42

本帖最后由 duoduo200 于 2022-4-26 18:46 编辑

回复 2# zaqmlp


我武断了大佬,原来是专门给我添加右键使用的,我说怎么单独用没有反应呢。
大佬就是人狠话不多!
作者: zaqmlp    时间: 2022-4-26 18:46

回复 3# duoduo200

右键菜单
作者: duoduo200    时间: 2022-4-26 18:48

回复 4# zaqmlp


   嗯嗯。

大佬一杯咖啡,以表心意。已经支付。

另,最近还有需求,还得麻烦你哈。
作者: duoduo200    时间: 2022-4-26 19:29

回复 4# zaqmlp


   大佬,非常好用,但能不能再加一个删除当前文件夹,因为提取后就空了,无保留价值。
作者: zaqmlp    时间: 2022-4-26 19:40

回复 6# duoduo200
rd 前 rem 去掉
作者: zaqmlp    时间: 2022-4-26 19:42

  1. Microsoft Windows [版本 10.0.19044.1645]
  2. (c) Microsoft Corporation。保留所有权利。
  3. C:\Users\Administrator>rem /?
  4. 在批处理文件或 CONFIG.SYS 里加上注解或说明。
  5. REM [comment]
  6. C:\Users\Administrator>rd /?
  7. 删除一个目录。
  8. RMDIR [/S] [/Q] [drive:]path
  9. RD [/S] [/Q] [drive:]path
  10.     /S      除目录本身外,还将删除指定目录下的所有子目录和
  11.             文件。用于删除目录树。
  12.     /Q      安静模式,带 /S 删除目录树时不要求确认
复制代码

作者: duoduo200    时间: 2022-4-26 20:05

回复 8# zaqmlp


    大佬没看懂,这个也是达到我说的需求吗?
作者: zaqmlp    时间: 2022-4-26 20:18

delete "rem" before "rd"




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