[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 qixiaobin0715 于 2024-4-11 08:48 编辑

findstr有时是好用,但总觉得尽量少用为好,findstr属于外部命令,调用时其效率要差些,特别是在循环体内调用且又使用了管道命令效率更差些。
  1. @echo off
  2. for /f "delims=" %%i in ('dir /s /b /ad') do (
  3.     if exist "%%i\*.symlink" (
  4.         set n=
  5.         for /f "delims=" %%j in ('dir /b /ad "%%i"') do set n=true
  6.         if not defined n (
  7.             move "%%i\*.symlink" "%%i\.."
  8.             rd /s /q "%%i"
  9.         )
  10.     )
  11. )
  12. pause
复制代码
以上代码未经测试,可能会有问题,但大体思路应当是这样。运行代码前请备份好源文件,以免出现意外。
1

评分人数

    • 77七: 感谢分享技术 + 1

TOP

本帖最后由 qixiaobin0715 于 2024-4-11 16:58 编辑
  1. @echo off
  2. for /f "delims=" %%i in ('dir /s /b /ad') do (
  3.     set n=
  4.     for /f "delims=" %%j in ('dir /b /ad "%%i"') do set n=true
  5.     if not defined n (
  6.         set m=
  7.         for /f "delims=" %%k in ('dir /b /a-d *.symlink *.mp4 *.mkv') do (
  8.             set m=true
  9.             move "%%i\%%k" "%%i\.."
  10.         )
  11.         if defined m rd /s /q "%%i"
  12.     )
  13. )
  14. pause
复制代码

TOP

回复 16# 77七
1.dir是内部命令,运行速度比我们想象的要快得多,定位到C:\,试了一下,25万多个文件夹也就是5分钟之内就解决问题。不知使用for /f+dir会如何;
2.文件夹超多的情况下,如果批处理使用6楼的思路,自定义变量设置数量可能会很多,甚至超限,效率可能更容易受到影响。记得win7系统变量设置最多可能8千多个,win10,win11不知是否放宽了限制。

TOP

返回列表