可以改进这个批处理文件以包含子文件夹吗?

可以改进这个批处理文件以包含子文件夹吗?

我在 .bat 文件中有以下几行:

@echo off
pushd %*
for %%j in (*) do type nul > "%%j"
popd

如果我运行它,它会将所有文件的大小更改为 0,包括批处理文件。如果我在 CMD 中使用它,我可以指定要更改的文件夹名称,如下所示:makeitzero.bat FOLDER_NAME

但是我对编程了解甚少,所以我想知道我是否也可以包括子文件夹(如果我运行它或从命令行运行)?

谢谢!


注意:我是这个网站的新用户,我不太清楚如何正确使用它,所以如果我犯了错误(错误的标题、错误的标签、不相关的信息等),我很乐意听到它,并在下次做得更好。


编辑1for /r成功了。这个方法很有效果:

@echo off
for /r "D:\DeleteInThis" %%a in (.) do (
    pushd %%a
    pushd %*
    for %%j in (*) do type nul > "%%j"
    popd
    )

谢谢!

答案1

FOR有几个模式开关使命令以各种方式工作。您应该查看FOR /F哪些允许您循环遍历命令的输出。使用DIR 命令列出所有子目录中的文件和目录。使用/S开关包含所有子目录并/B获得纯文本输出(仅文件和文件夹的完整路径名)。

dir /s /b ".\*"

要将输出DIR与循环结合起来,请将 FOR 命令修改为如下形式:

for /f "tokens=*" %%j in ('dir /s /b ".\*"') do type nul > "%%j"

警告:在运行上述任何命令之前,请阅读所有内容!主题是关于将多个文件的大小更改为 0,这意味着删除文件的内容!

相关内容