batch-file - 在不知道所述目录名称的情况下打开多个目录并使用 Windows 批处理文件删除其中的文件夹
问题描述
好吧,我真的不知道如何完全描述我想要的东西,而且我为问这么高级的东西而感到难过。除了使用批处理移动文件夹和删除文件和文件夹外,我不知道如何做任何事情。
我正在尝试制作一个批处理文件来删除某些用于缓存数据的 Steam 文件和文件夹。我可以很容易地为自己制作这个并收工,但是我想分享它并让它也适用于其他人。问题是其中一个缓存文件夹以唯一的 Steam 标识符命名。我将把到目前为止我所做的放在下面。
REM Makes a temporary folder.
mkdir %LocalAppData%\Temp\steam_cache
REM Deleted all none essential files in Steam's configuration folder.
move "%ProgramFiles(x86)%\Steam\config\config.vdf" %LocalAppData%\Temp\steam_cache
move "%ProgramFiles(x86)%\Steam\config\loginusers.vdf" %LocalAppData%\Temp\steam_cache
rmdir "%ProgramFiles(x86)%\Steam\config" /s /q
mkdir "%ProgramFiles(x86)%\Steam\config"
move %LocalAppData%\Temp\steam_cache\config.vdf "%ProgramFiles(x86)%\Steam\config"
move %LocalAppData%\Temp\steam_cache\loginusers.vdf "%ProgramFiles(x86)%\Steam\config"
REM Delete all none essential files in Steam's userdata folder.
我将把文件结构放在下面。
%ProgramFiles(x86)%\Steam\userdata\256283931
如您所见,最后的数字是完全随机的,我不知道如何在不知道数字的情况下打开该目录。如果您使用多个帐户登录,有时会有多个具有随机名称的文件夹,我希望批处理文件一个一个进入它们并删除其中的某个文件夹。
我将把下面随机编号的文件夹中我想删除的文件夹放在下面。
%ProgramFiles(x86)%\Steam\userdata\256283931\ugcmsgcache
对不起,如果我问的太多了,请忽略这篇文章,谢谢。
解决方案
您正在寻找的是for /D
循环,它枚举目录:
rem // Enumerate all directories under `userdata`:
for /D %%I in ("%ProgramFiles(x86)%\Steam\userdata\*") do (
rem // Check if there is really a sub-directory called `ugcmsgcache`:
if exist "%%~I\ugcmsgcache\" (
rem // Do something with the full path, like echoing, for instance:
echo "%%~I\ugcmsgcache"
)
)
如果要确保枚举目录的名称/-ies 名称仅由十进制数字组成,则可以使用dir
andfindstr
和for /F
循环:
rem // Change into parent directory, because `dir /B` returns plain directory names:
cd /D "%ProgramFiles(x86)%\Steam\userdata"
rem // Enumerate all directories under `userdata`, whose names are pure numbers:
for /F "delims=" %%I in ('
dir /B /A:D "*" ^| findstr /I /X "[0123456789]*"
') do (
rem // Do something with the full path, like echoing, for instance:
echo "%%~fI\ugcmsgcache"
)
~f
修饰符确保导出与当前工作目录相关的完整路径。
推荐阅读
- asp.net-mvc - 通过 POST 发送多选
- reactjs - Heroku 在部署时给出应用程序错误
- java - 延迟一段时间后执行任务,如果遇到无限循环则停止
- azure-devops - Azure DevOps 管道从 UI 输入变量值
- preact - preact-cli 项目在添加 react-ga 时显示“无法解析 'react'”(别名问题)
- c++ - How can I check if Google services are blocked for my current user?
- javascript - How to stop the slider from resetting to the left side on mouse release (react-spring react-use-gesture)
- javascript - 如何申请 forEach();
- python - 我可以编写一个可以为 x 行重复图表的程序吗
- html - 使用 flexbox 在 li 标签中定义锚标签