标题: [文本处理] 【已解决】批处理文件夹提取和并列的提取的问题 [打印本页]
作者: 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)下的文件。- @echo off
- for /f "delims=" %%a in ('dir /a-d /b /s ') do (
- move "%%~a" ./ 2>nul
- )
复制代码
同样要有遍历、不能指定文件夹名称和路径。
作者: zaqmlp 时间: 2022-4-26 17:50
- @echo off
- if "%~1" equ "" exit
- if not exist "%~1\" (echo;Path Error Or Not Folder&pause&exit)
- for /f "delims=" %%a in ('dir /a-d/b/s "%~1\" 2^>nul') do (
- echo;"%%a" --^> "%~dp1"
- move "%%a" "%~dp1"
- )
- rem rd /s /q "%~1\"
- pause
- 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
- Microsoft Windows [版本 10.0.19044.1645]
- (c) Microsoft Corporation。保留所有权利。
-
- C:\Users\Administrator>rem /?
- 在批处理文件或 CONFIG.SYS 里加上注解或说明。
-
- REM [comment]
-
- C:\Users\Administrator>rd /?
- 删除一个目录。
-
- RMDIR [/S] [/Q] [drive:]path
- RD [/S] [/Q] [drive:]path
-
- /S 除目录本身外,还将删除指定目录下的所有子目录和
- 文件。用于删除目录树。
-
- /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 |