我是一名长期的观众,但这是我的第一个问题,如果我做错了,请原谅。
我需要递归删除远程计算机上的所有文件夹和文件,并且我想要防止特定文件夹被删除。
这些排除的文件夹列在一个名为 excludeDirectories.txt
的文本文件中,每行一个文件夹名称。
我的第一次尝试是将命令提示符命令与psexec
的使用相结合。脚本如下所示。请注意,我是从批处理命令运行这些命令的,因此有双重 %%
:
net use r: \\machine\sharedFolderName
FOR /D %%a IN (R:\*.*) DO (
c:\pstools\psexec cmd /c rmdir /s /q R:\
)
这个脚本会删除所有内容,但我无法弄清如何在循环中检查文本文件以获取当前文件夹,并在找到文件的情况下跳过FOR
循环中的下一个文件夹。
我花了几天时间,尝试将文件夹读入到可以在IF
语句中使用的东西中,并在找到匹配项时从psexec
行中分支出来。
再一次强调,我想要实现的是:
- 递归地遍历
R:
驱动器上的文件夹 - 在
FOR
循环中检查每个文件夹是否在文本文件中 - 如果
FOR
循环中的当前文件夹在文本文件中找到,则跳过删除文件夹的行并进入FOR
循环中的下一个文件夹 - 不能使用PowerShell
- 必须将排除的文件夹存储在文本文件中
/x
开关无法找到最后一行,如果它没有以换行符结尾。有些文本编辑器总是在文件末尾添加一个换行符,但其他编辑器(如记事本)则不会,您需要手动添加它。 - Neil