【发布时间】:2015-04-22 19:29:25
【问题描述】:
在创建基于一堆子文件夹的输出文件(或“报告”)时,我需要一些帮助。我想每晚将此报告通过电子邮件发送给自己(我可以处理文件的电子邮件发送,只是不确定如何创建实际文件)。
我的数据结构:
- 主工作目录包含:
- 我的 .bat 文件将数据从 3 个服务器复制到下面的 TFX Logs 文件夹
- TFX 日志文件夹
- 客户端文件夹
- 最多 15 天的 .log 文件
- 客户端文件夹
我想做的事:
- 将数据从 3 个服务器复制到 TFX Log 文件夹,保持结构 (TFX Log\Client\TFX_*.log) (COMPLETED)
-
创建一个 .txt 或 .csv 文件,其中包含每个客户端文件夹中最新的 TFX_*.log 文件的列表(只是最新的 - 不是所有 15 个文件)。像这样的:
目录名称 |文件名 |修改日期
- 通过电子邮件将文件发送给我自己(已完成)
我只需要关于 2 号的帮助。
这是我目前所拥有的:
:: Copying data
XCOPY "%source1%" "%destination%\TFX Logs\" /s /y
XCOPY "%source2%" "%destination%\TFX Logs\" /s /y
XCOPY "%source3%" "%destination%\TFX Logs\" /s /y
:: Deleting old output file before creating new one
DEL "%destination%\*.txt"
:: Creating new output file
powershell "& '%destination%\ListFiles.ps1'"
REN "%destination%\ImportReport.txt" ImportReport_%tday%.txt
我的 Powershell 脚本如下所示:
Get-ChildItem "..Daily Report\TFX Logs\" -recurse -file | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-1)} | Out-File "..Daily Report\ImportReport.txt"
我现在得到的是:
(如果可能,我只想要使用上面#2 中指定的结构的每个文件夹中的最新文件)
Directory: ..\TFX Logs\Client1
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 4/22/2015 3:06 AM 329 TFX_db21_1522040304.log
Directory: ..\TFX Logs\Client2
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 4/22/2015 12:22 AM 331 TFX_db4_1522040017.log
Directory: ..\TFX Logs\Client3
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 4/21/2015 8:03 PM 329 TFX_db4_1521042002.log
悬崖笔记:
我想将 PowerShell 的输出重新排列为:
目录名称(目录)|文件名(名称) |上次修改日期 (LastWriteTime)
没有所有其他的东西和所有的空白。只是一个不错的逐行输出。
另外,如果可能的话,如果那里有一个空白文件夹(或者有一个文件夹包含超过 15 天的文件),仍然在报告文件中显示它,但没有记录。这样我就知道了,嘿嘿,这个客户端好久没跑了,需要检查一下。
2015 年 4 月 29 日更新
以下 Magoo 的建议很有希望,但对我没有用。它什么也没做。有人对如何改进我已有的东西有任何其他想法吗?
【问题讨论】:
标签: windows batch-file command