我正在尝试使用批处理脚本在远程Windows服务器2008/2012上获取日志文件的上次修改日期。 我使用" net use"连接到机器,并能够查看文件是否存在。
net use \\X.X.X.X /user:%USERNAME% %PASSWORD%
if exist "\\X.X.X.X\\C$\\Temp\\LogFiles\\abcd" (
echo ABCD file exists on the server
) else (
echo ABCD file does NOT exist on the server
)
此外,我可以使用forfiles获取本地文件的最后更新时间:
for /f "delims=" %%i in ('"forfiles /m MyLocalAbcd /c "cmd /c echo @file was last modified at @ftime" "') do set modif_time=%%i
echo %modif_time%
但是,我无法获得远程文件的修改时间。我试图提供完整的路径 - forfiles / M" \ X.X.X.X \ C $ \ Temp \ LogFiles \ abcd" - 或者甚至提供forfiles选项P的路径,但它找不到文件。
是否有一种简单的方法来获取远程文件的修改日期/时间? 另外,我想知道是否有办法使用Windows内置命令来拖尾同一文件的最后n行。
任何帮助表示赞赏! 谢谢!
答案 0 :(得分:0)
尝试dir
。
或者以不同方式使用for循环。
for %%A in (\\server\C$\Temp\LogFiles\abcd) do echo %%~tA
粘贴到命令提示符中的工作示例。
for %A in (\\127.0.0.1\C$\windows\win.ini) do echo %~tA
对于你偷偷摸摸的另一个问题
more +50
跳过前50行。
这个VBScript做你想要的。
Set Arg = WScript.Arguments
Set WshShell = createObject("Wscript.Shell")
Set Inp = WScript.Stdin
Set Outp = Wscript.Stdout
Set rs = CreateObject("ADODB.Recordset")
With rs
.Fields.Append "LineNumber", 4
.Fields.Append "Txt", 201, 5000
.Open
LineCount = 0
Do Until Inp.AtEndOfStream
LineCount = LineCount + 1
.AddNew
.Fields("LineNumber").value = LineCount
.Fields("Txt").value = Inp.readline
.UpDate
Loop
.Sort = "LineNumber ASC"
If LCase(Arg(1)) = "t" then
If LCase(Arg(2)) = "i" then
.filter = "LineNumber < " & LCase(Arg(3)) + 1
ElseIf LCase(Arg(2)) = "x" then
.filter = "LineNumber > " & LCase(Arg(3))
End If
ElseIf LCase(Arg(1)) = "b" then
If LCase(Arg(2)) = "i" then
.filter = "LineNumber > " & LineCount - LCase(Arg(3))
ElseIf LCase(Arg(2)) = "x" then
.filter = "LineNumber < " & LineCount - LCase(Arg(3)) + 1
End If
End If
Do While not .EOF
Outp.writeline .Fields("Txt").Value
.MoveNext
Loop
End With
使用
仅对标准输入和标准输出进行读写。这些仅在命令提示符中可用。
filter <inputfile >outputfile
filter <inputfile | other_command
other_command | filter >outputfile
other_command | filter | other_command
<强>剪切强>
filter cut {t|b} {i|x} NumOfLines
从文件的顶部或底部剪切行数。
t - top of the file
b - bottom of the file
i - include n lines
x - exclude n lines
示例强>
filter cut t i 5 < "%systemroot%\win.ini"