我需要一点帮助,我希望你们中的一个可以帮助我。
我有一个路径(目录),其中有很多文件夹。在这些文件夹中,有很多我一无所知的子文件夹和文件。所以我不知道它们下有多少个子文件夹和子文件夹以及文件。它是一棵大的文件夹树。我的任务是创建一个可以检查文件夹或文件是否存在 72 小时的脚本,如果是,则需要删除该文件夹。这意味着我有一个包含很多文件夹的路径。
一个例子是名为 ANSYS 的文件夹。在 ANSYS 中有许多子文件夹和文件。我必须检查所有 ANSYS 文件夹,看看文件夹及其子文件夹中是否有 72 小时前的文件。如果 ANSYS 中的所有内容都是 72 小时前的,则必须删除整个 ANSYS。我制作了一个可以完成我的工作的 C# 应用程序,但我需要在数百台服务器上使用应用程序,而且我没有时间在所有服务器上安装 .NET 框架。这就是为什么我必须使用可以做同样事情的 bash 脚本。
这是我的 C# 应用程序,您可以查看以了解更多我的任务:
using System;
using System.IO;
namespace Scripts
{
internal class Program
{
private static void Main(string[] args)
{
//Defines the main path.
var topPath = @"C:\Ansys_RSM_Work_DIR\";
//Converts the first argument written as a parameter in TaskScheduler or CMD, called 'hours'.
string argument = args[0];
int hours = Int32.Parse(argument);
//Defines the timespan in which a file has to be modified.
var deleteIfNotModifiedIn = new TimeSpan(hours, 0, 0);
//Is set to true if the file file has been modified within the timespan.
bool fileTooOld = false;
//Searches through all directories in topPath, one at a time.
foreach (var dir in Directory.GetDirectories(topPath))
{
//Searches through all files in directory, one at a time.
foreach (var file in Directory.GetFiles(dir, "*", SearchOption.AllDirectories))
{
//Calculate the difference between now and lastWriteTime = fileLastModified.
var fileLastModified = DateTime.Now - File.GetLastWriteTime(file);
if (fileLastModified < deleteIfNotModifiedIn)
fileTooOld = true;
}
if (fileTooOld == false)
Directory.Delete(dir, true);
else
fileTooOld = false;
}
}
}
}
我已经尝试过制作一个脚本,但是如果我制作的脚本中的文件是 72 小时前,我制作的脚本会删除一个子文件夹,这是不应该的。如果自过去 72 小时以来未修改 ANSYS 中的所有文件和 ANSYS 中的所有子文件夹,它应该只删除第一个文件夹(意思是像 ANSYS):我的脚本:
FORFILES /S /D -3 /C "cmd /c IF @isdir==TRUE rd /S /Q @path"
for /f "delims=" %i in ('dir /s /b /ad ^| sort /r') do rd "%i"
谁能帮帮我吗?
向沙班·马哈茂德致以亲切的问候