Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件以在特定日期删除文本_Batch File - Fatal编程技术网

Batch file 批处理文件以在特定日期删除文本

Batch file 批处理文件以在特定日期删除文本,batch-file,Batch File,我正在尝试创建一个批处理文件,但不知道从哪里开始。我需要一个批处理文件,从文件中读取文本,并将写入的日期与今天的日期进行比较,如果它们相隔超过30天,则它将删除该日期行和下一行代码。如下例所示 2015年6月1日 阿尔伯特 2015年6月15日 罗杰 2015年7月3日 史蒂夫 2015年5月6日 鲍勃 如果文件运行的日期是2015年7月5日,那么文本文件将如下所示 2015年6月15日 罗杰 2015年7月3日 史蒂夫 感谢任何人提供的帮助。批量计算日期/时间是可能的,但很麻烦,我建议使用更高

我正在尝试创建一个批处理文件,但不知道从哪里开始。我需要一个批处理文件,从文件中读取文本,并将写入的日期与今天的日期进行比较,如果它们相隔超过30天,则它将删除该日期行和下一行代码。如下例所示

2015年6月1日
阿尔伯特
2015年6月15日
罗杰
2015年7月3日
史蒂夫
2015年5月6日
鲍勃

如果文件运行的日期是2015年7月5日,那么文本文件将如下所示

2015年6月15日
罗杰
2015年7月3日
史蒂夫


感谢任何人提供的帮助。

批量计算日期/时间是可能的,但很麻烦,我建议使用更高级的语言来解决这个问题。下面是一些解决您问题的PowerShell

$foundDateToRemove = $false
$date = [datetime]::Now
Get-Content 'input.txt' | foreach {
    if ([datetime]::TryParse($_, [ref]$date)) {
        # Line is a date.  Remove it if it's more than 30 days old
        if ($date.AddDays(30).CompareTo([datetime]::Now) -lt 0) {
            $foundDateToRemove = $true
        }
        else {
            # Date still current; output line
            $_
        }
    }
    elseif ( $foundDateToRemove ) {
        # This is the line after the removed date
        $foundDateToRemove = $false
    }
    else {
        # This is any other line in the file.  Output it for good measure.
        $_
    }
} | Out-File 'output.txt'
此脚本打开名为
input.txt
的文件,并写入
output.txt
。如果要覆盖行为,请在运行后复制output.txt input.txt

你的一些约会例子模棱两可。例如,“6/1/15”可能是1月6日,也可能是6月1日。脚本将使用您计算机的本地区域性格式解析日期,在您的情况下,我假定该格式为
M/d/yy
。如果需要优化该格式,请修改脚本以将格式参数传递给


此外,根据文件的编码,您可能需要将
-encoding
参数传递到
输出文件
。默认值为系统ANSI。

日期/时间数学可以成批计算,但很混乱。你会考虑一个VBScript或Pux壳解决方案吗?只要它是可以自动运行的任何解决方案,对我来说都是很棒的。