我最近安装了一个新的 NAS,并尝试创建一个像以前一样的“Temp”文件夹,基本上是一个用于在工作时间移动文件然后每晚删除的文件夹。
我对批处理文件的了解非常有限。我在另一个网站上找到了这个,但无法让它工作。希望有人能解释我如何改进它或为什么它不起作用。
@echo off
rd "C:test" /F /Q
为了让事情稍微复杂一些,我有一个名为“此共享每天都被删除 - 不存储重要文件”的子文件夹。
我想知道是否有可能删除该文件夹的所有文件和子文件夹但保留上面命名的子文件夹?
任何帮助将非常感激。
詹姆士
答案1
对于您的第一个问题,我认为您想要的是 /S /Q 而不是 /F /Q,并且ECHO OFF
不需要该行,您只需在命令前面加上 @ 即可,这样可以防止命令本身被回显:
@RD "C:test" /S /Q
这将删除测试文件夹及其所有内容。它作用于当前 C: 位置的测试文件夹(根据您的示例)。
如果您想保留“test\This Share is Deleted Daily - Do Not Store Important Files”文件夹,那么这应该可行,但是您必须提供完整路径两次 - 我在这里使用了 %USERPROFILE% ):
FOR /F "usebackq delims==" %i IN (`dir /b /s "%USERPROFILE%\test"`) DO @IF "%~i" NEQ "%USERPROFILE%\test\This Share is Deleted Daily - Do Not Store Important Files" @DEL /S /Q "%i" 2>NUL
当然,你需要非常小心地使用这样的命令,很有可能意外删除一些有用、重要或关键的数据。
如果您想尝试更复杂的事情,我建议您考虑安装 cygwin,然后编写 bash 脚本来实现您的目标。bash 比批处理好得多!