批处理清理VMwareDnD
-
分享一个自编的清理VMwareDnD简单批处理,仅在装有“Windows 终端”应用的操作系统上才能发挥所有功能
-
其二目的是简单学习一下Windows中bat文件的编写方法
-
设计的简单批处理要达到这几个目的:
-
检查VMwareDnD是否存在
-
检查VMwareDnD是否本身就是空的
-
VMwareDnD非空前提下,展示内容,但不要无关紧要的信息或者过多的信息(例如被复制的是文件夹,只展示文件夹本身而非其中内容)
-
清空VMwareDnD文件夹并保留它自身
-
展示内容同时提供可点击的路径链接,方便管理(此功能只能在通过“Windows 终端”应用启动批处理的时候有效,Windows 11默认就是用的“Windows 终端”应用)- -
-
-
命令部分:
-
新建文档,复制以下代码到其中(不急改后缀和文档名),务必继续往下看
@echo off setlocal enabledelayedexpansion title 清理VMwareDnD目录 ::targetDir set "targetDir=C:\Users\%username%\AppData\Local\Temp\vmware-%username%\VMwareDnD" ::设置VMwareDnD的路径,因当前Windows用户名不同而不同 ::exist? if not exist "%targetDir%" ( echo [91m目标目录不存在[37m: echo %targetDir% echo. pause exit ) else ( echo [93m目标目录为:[0m[96m(仅在“Windows 终端”应用中可按住ctrl并点击路径以跳转)[0m[4m[94m set targetDirTmp=!targetDir:\=/! echo "file:///!targetDirTmp!"&&echo|set /p=[0m ) ::当VMwareDnD不存在时,也就是说明从未将文件或文件夹拖入或拖出客户机,或者被拖入或拖出的对象没有满足在VMwareDnD中转的规则 ::,所以此处也无需提供跳转目标地址链接,提示用户目录不存在,按任意键退出 ::相反的,目标地址存在,则提供跳转目标地址链接,对于链接,Windows中地址里的“\”需替换为“/” ::already empty? echo. dir /b "%targetDir%"|findstr .*>nul||( echo [92m未找到任何内容,因为VMwareDnD里面是空的![37m echo. pause exit ) ::VMwareDnD是空的,打印提示信息,按任意键退出 ::清理VMwareDnD目录批处理 -ByKAINEYLB 2025_07_21-11_59_33 ::preview echo [93m文件列表:[0m[96m(从上到下时间递增)[0m for /f %%i in ('dir "!targetDir!" /b /od') do ( set tempPath=!targetDir!\%%i set tempPath=!tempPath:\=/!&&echo|set /p=[4m[94m echo "file:///!tempPath!"&&echo|set /p=[0m dir "!tempPath!" /b /od ) ::VMwareDnD有内容?那么按照从上到下的时间顺序展示这些文件(为什么从上到下呢?因为控制台执行命令结束后,光标是定位到最后的) ::这里展示文件用了for循环中嵌套dir命令的方法,因为如果用for /d %%i in ("<VMwareDnD的地址>\*")的话,遍历默认按照名称进行 ::,若没猜错的话,VMwareDnD中的文件夹名称都是用产生的哈希值来命名的,用名称排序肯定不符合时间顺序 ::confirm? echo. echo [93m确定清空VMwareDnD目录中的内容吗?[96m(输入“y”或“Y”并回车来确认)[0m set /p "ConfirmAns=" if "%ConfirmAns%" equ "y" goto ExecuteCleanProgress if "%ConfirmAns%" equ "Y" goto ExecuteCleanProgress exit ::批处理应当避免打开即直接执行的问题,提示用户是否对整个VMwareDnD内容清空 ::execute :ExecuteCleanProgress for /d %%i in ("%targetDir%\*") do rmdir /s /q "%%i" del /q /f "%targetDir%\*" ::遍历VMwareDnD中的所有文件夹,获取文件夹地址,利用rmdir命令对文件夹及其内容进行删除,这种删除是不经过回收站的 ::正是由于rmdir这种会连目标文件夹自身都删除的命令,想保留VMwareDnD时就必须稍微复杂点,保留VMwareDnD目的也是为了判空 ::done echo. echo [92m完成![37m timeout 2 ::提示用户完成清理,延迟2秒自动关闭,个人觉得之前输入过“y”或“Y”,此处改为“按任意键继续”不妥 -
bat文件中的内容应当为ANSI编码类型的,否则会错误识别代码导致乱码。选择文档中的另存为,定位好路径后,输入
CleanVMwareDnD.bat作为名称(名称其实随意),编码改为ANSI,保存
![Snipaste_2025-07-21_12-41-12]()
-
-
效果:
- 目录不存在:
![Snipaste_2025-07-21_12-01-53]()
- 目录存在,但内容是空的(之前清理过?):
![Snipaste_2025-07-21_12-01-23]()
- 目录中存在内容,简化展示具体内容并以其所在路径作为开头:
![Snipaste_2025-07-21_12-00-48]()
- 输入“y”或“Y”后的提示信息:
![Snipaste_2025-07-21_12-01-07]()
- 目录不存在:
-
如果这个批处理可以帮到您的话,请给予回复让我知道这有意义(/▽\)






浙公网安备 33010602011771号