通过批处理文件自动化cygwin

emt*_*unc 3 cygwin batch-file

长话短说...我们有多个服务器,我们每晚运行perflog监控.我的工作是将这些日志转换为.csv格式并将它们发送到我的电子邮箱.

这个位已经通过.sh脚本自动化,前雇员写道.

我想要自动化的是在perfmon日志记录之后运行批处理作业以查看特定文件夹并找到最新的.blg文件并在其上运行sh脚本(该脚本称为上载),这样我就不必记录进入每个服务器并手动完成.

例如

上传myInitials cd /cygdrive/someLocation/logs/$latestFile$.blg

myInitials和位置可以硬编码...我只是不知道如何在文件夹中找到最新文件并通过批处理文件自动完成.

任何指针都会非常有用!

@杰里米:

对不起,我可能应该在我的问题中提到服务器正在运行2003和2008.

我不认为在文件夹上注册更改通知是绝对必要的 - 如果日志从中午运行到早上7点,脚本将立即运行(您可以设置脚本在perfmon日志之后运行)完成日志属性)所以日志几乎肯定是文件夹中的最新文件.

就像我说的,我已经有一个.sh文件转换为csv并发送到我的电子邮件,我只需要将它合并到一个批处理文件中,这样我就不会去每个服务器并打开cygwin并输入upload xx /cygdrive/location/logs/xyz.blg,我可以让它自动完成日志完成后直接运行而不必将RDC放入其中.

感谢您的投入!

Rag*_*ram 8

如果您有一个Shell脚本,并且您的工作是从Windows批处理文件调用shell脚本,那么这将工作.这假设cygwin安装在C:

start_cyg.bat的内容

@echo off
set PATH=%PATH%:"C:\Cygwin\bin"

rem bash --login -i

bash "/cygdrive/d/cyg.sh"
Run Code Online (Sandbox Code Playgroud)

cyg.sh的内容

#!/bin/bash

TAIL=`ls -lrt | tail -1`
echo "TAIL:$TAIL"
Run Code Online (Sandbox Code Playgroud)

如果从windows命令提示符调用start_cyg.bat,则可以在控制台中获取cyg.sh的输出