我尝试编写批处理文件以从日志文件中打开最新的会话日志。
我有一个bash脚本,它将完全按照我的意思在linux上执行,通过按时间顺序列出我的logs文件夹的内容,grep用于以Session开头并使用最新的行。之后,它会将其附加到文件路径并打开它。 bash脚本的代码如下:
mostRecentLogFile=~/my/logs/folder/$(ls -t ~/my/logs/folder | grep ^Session | head -1)
displayFunction="gedit"
echo "Opening $mostRecentLogFile ..."
$displayFunction $mostRecentLogFile
但是我基本上需要将此脚本转换为批处理文件,以便在Windows上执行相同的操作。
我可以在logs文件夹中打开最近的文件,但是还有其他类型的日志文件,我需要获得最新的文件字符串" Session"所以这段代码并不总是打开正确的文件:
cd my\logs\folder
FOR /F %%I IN ('DIR *.* /B /O:-D') DO notepad.exe %%I
有关如何编辑此代码以过滤包含子字符串的文件名的任何建议,我们将不胜感激。
答案 0 :(得分:2)
这可能不是最好的方法,但似乎有效
FOR /F %%I IN ('DIR *.* /B /O:D') DO echo %%I |>nul findstr /B "Session" && set logfile=%%I
notepad.exe %logfile%
不是按相反顺序排序(最新的第一个),而是按标准顺序排序(最早的第一个),因此%logfile%
的最终赋值是以“Session”开头的最新文件名。在第一行%logfile%
包含日志文件的文件名后,第二行只打开它。
修改强>:
根据您的确切用例,似乎可以缩短
之类的内容FOR /F "delims=" %%I IN ('DIR Session* /B /O:D /A:-D') DO set "logfile=%%I"
notepad "%logfile%"