我有一个目录%userprofile%\appdata\roaming\.minecraft\versions
并且在该目录中有一大堆文件夹,我想要一个批处理文件来删除名称中带有 forge 的所有文件夹。
这些文件夹中没有子文件,但每个文件夹中有 2 个文件...我希望使用批处理文件自动删除该目录中名称中带有 forge 的所有内容。
因此,删除所有名称中包含 forge 的文件夹。我似乎无法做到这一点。
我曾尝试用谷歌搜索一些东西,但我记不清我尝试过的所有东西......但这里有一些。
rmdir /s %userprofile%\appdata\roaming\.minecraft\versions
for /d /r . %d in (forge) do @if exist "%d" rd /s/q "%d"
另外,尝试了这个(下面),但它只列出了我想要删除的文件夹和文件。
dir "%userprofile%\appdata\roaming.minecraft\versions" /s /b /d | find "forge"
答案1
@echo off & set "_target=%userprofile%\appdata\roaming.minecraft\versions"
for /f tokens^=* %%i in ('dir /s/b/a:d "%_target%\*forge*"')do echo/RMDir /q/s "%%~i"
- 或者...
@set "_target=%userprofile%\appdata\roaming.minecraft\versions"
@for /f tokens^=* %%i in ('dir /s/b/a:d "%_target%\*forge*"')do @echo/RMDir /q/s "%%~i"
1)将目标路径设置为变量
set "_target=%userprofile%\appdata\roaming.minecraft\versions"
2)使用For /f
和dir /s /b /a:d
列出所需文件夹:
for /f tokens^=* %%i in ('dir /s /b /a:d "!_target!\*forge*"')...
3)查看for
循环命令和echo
输出...
')do echo/RMDir /q/s "%%~i"
4)如果之前的输出没问题,则删除echo
命令递归删除文件夹和可能的子文件夹/文件...
echo/RMDir /q /s "%%~i"
对于命令行帮助,您可以使用/?
:
Set /?, For /?, RMDir /?
在互联网上,您可以获得更多有关以下方面的帮助:
答案2
答案3
在构建这种类型的批处理程序时,请帮自己一个忙,在运行最终版本之前,用 echo 或确认替换结束命令,测试解析的文件是否与要实现的目标正确对应
@Echo Off
PUSHD %userprofile%\appdata\roaming.minecraft\versions
For /R %%A in (*forge*) do (
IF "%%~xA" == "" (
Choice /N /C ny /M "Remove Folder? %%A"
IF Errorlevel 2 (RMDIR "%%A")
) Else (
Del /P "%%A"
)
)
POPD
Pause
答案4
如果你想查找并删除名称中带有“forge”的文件,只需输入锻造在搜索栏中,然后按 CTRL + A 选择所有文件(文件名包含 forge)并点击删除