最近,我一直在努力创建自己的批处理命令,让日常事务变得更加容易。我想创建一个脚本来删除Temp文件夹中的所有内容,因为它总是充斥着不必要的文件。我在网上找到了这个代码并且它有效,但我对它的实际意图做了什么感到困惑。我理解它的某些部分,但大多数人让我感到困惑。我知道它正在使用for
循环,但这并没有真正告诉我很多。我在逻辑上知道它是有道理的,但我觉得文档并不清楚整个脚本在做什么。无论如何,这是脚本:
set folder="C:\Users\%USERNAME%\AppData\Local\Temp"
cd /d %folder%
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)
非常感谢任何帮助,谢谢!
答案 0 :(得分:0)
好的,所以前两行非常简单。它只是将一个变量设置为文件夹路径,然后将CD
设置到该文件夹中。 The /d
flag用于更改驱动器(C:
),如果它当前设置为另一个驱动器。
现在,最后一个是a for cycle。它的作用基本上是:对于dir /b
中的每个文件,它以裸格式(仅名称)显示当前目录中的所有文件,它执行rmdir
,删除目录,或者,如果{ {1}}失败,因为参数不是目录,它只是rmdir
。两种情况下的del
内容均为:/s/q
- 从所有子文件夹中删除/s
- 不提示/q
。
希望我帮忙!
答案 1 :(得分:0)
第一行设置变量folder
的值。
第二个将驱动器和目录更改为分配给folder
的值。
第三个首先执行当前目录的基本形式(仅名称)的目录列表(刚刚更改),并将结果列表的每一行完整地分配给%%i
。
然后在%%i
安静模式下使用rmdir
或rd
命令以及包括所有子目录的/q
删除名称/s
。这适用于目录,但不适用于文件。 ||
再次调用del
命令/s /q
,其含义相同,del
删除文件。
因此,删除了作为目录的任何名称,如果它是文件,则rmdir
会失败,因此del
会将其删除。
引号用于确保遇到包含空格或逗号分隔符的任何名称。