Batch file 如何以一种好的格式获取文件戳?
网络大师。 我在尝试输出此批处理文件的美观格式时遇到问题:Batch file 如何以一种好的格式获取文件戳?,batch-file,timestamp,Batch File,Timestamp,网络大师。 我在尝试输出此批处理文件的美观格式时遇到问题: 这一批可以正常工作,但速度很快,脏兮兮的: 每台机器都会打印大量无用信息: 我的问题是: 有一种方法可以得到一个好的日志吗? .即: 提前感谢以下批处理脚本应按预期工作: @(对于/F“UseBackQ Delims=”%A In(“C:\temp\machine\u list.txt” )Do@For/F EOL^=^^Delims^=%%B In('Dir/A“\\\%%A\C$\Logs\filelog.txt“) )执行
这一批可以正常工作,但速度很快,脏兮兮的: 每台机器都会打印大量无用信息:
我的问题是: 有一种方法可以得到一个好的日志吗? .即:
提前感谢以下批处理脚本应按预期工作:
@(对于/F“UseBackQ Delims=”%A In(“C:\temp\machine\u list.txt”
)Do@For/F EOL^=^^Delims^=%%B In('Dir/A“\\\%%A\C$\Logs\filelog.txt“)
)执行@Echo%%A%%B)>“C:\temp\Log.txt”
我不会解释它是如何工作的,但重要的部分是嵌套的For
循环。它按预期运行Dir
命令,但忽略以字符空间开头的所有行。这是通过使用一种看似奇怪但有效的语法,将行尾,EOL
设置为该字符来完成的
编辑
也许这将达到你最近评论的目的:
@Echo关闭
对于/F“UseBackQ Delims=“%%A In”(“C:\temp\machine\u list.txt”)Do(
如果存在“\\%%A\C$\Logs\”(
对于('Dir/A“\\%%A\C$\Logs\filelog.txt“')中的/F EOL^=^^^^^^^^^^ Delims^=%%B,请执行>>“C:\temp\Log.txt”Echo%%A%%B
)Else>>“C:\temp\Log\u error.txt”Echo%%A)
编辑2
这是一个进一步修改的示例,希望能够更好地记录错误:
@Echo关闭
对于/F“UseBackQ Delims=“%%A In”(“C:\temp\machine\u list.txt”)Do(
如果存在“\\%%A\C$\Logs\filelog.txt”(
(对于/F下线^=^^^^=%%B英寸(
'Dir/A“\\%%A\C$\Logs\filelog.txt”'
)是否回显%%A%%B)>>“C:\temp\Log.txt”)其他内容((
如果不存在“\\%%A\C$\”Echo%%A无法访问
Echo%%A缺少filelog.txt)>>“C:\temp\ErrLog.txt”))
正如我所说,它工作正常。现在我面临着如何管理cmd shell中刚刚打印的错误文本:系统无法找到指定的文件。找不到网络路径。访问被拒绝。目标帐户名不正确。你有什么建议吗?If Exist
语句可能会有所帮助:@(对于/F“UseBackQ Delims=”%A In(“C:\temp\machine\u list.txt”)Do@If Exist“\\\%%A\C$\Logs\”For/F EOL^=^^Delims^=%B In('Dir/A“\\%%A\C$\Logs\filelog.txt”)Do@Echo%%A%%A%%B>“C:\temp\Log.txt”
。如果我能解密(:)你的脚本,您只管理脚本可以在其中搜索的计算机。如果同时我想管理错误,我应该在“Echo%%A>“C:\temp\Log\u error.txt”中添加类似“在”如果不存在“\\%%A\C$\Logs\”的内容是否正确?thanks@Romeo,我在我的答案中添加了一个编辑部分作为进一步的帮助。我太笨了,不适合批处理…:-(.@Echo Off For/F“UseBackQ Delims=“%A In”(“C:\temp\machine\u list.txt”)Do(如果存在“\\%A\C$\Logs\”)(For/F EOL^=^^^^Delims^=%B In('Dir/A“\\\%A\C$\Logs\filelog.txt”)Do>“C:\temp\Log.txt”Echo%%A%%B)Else(Echo%%A>“C:\temp\tmpmachine.txt”set/p machine=“C:\temp\tmperor.txt”2>>“C:\temp\Log\u error.txt”))
@echo off
setLocal EnableDelayedExpansion
for /f "tokens=*" %%G in (c:\temp\machine_list.txt) do (
echo %%G
echo %%G >> c:\temp\Log.txt
dir "\\%%G\C$\Logs\filelog.txt" /A >> c:\temp\Log.txt
)
Machine_id
Volume in drive \\Machine_001\C$\Logs is System
Volume Serial Number is 0271-2533
Directory of \\Machine_001\C$\Logs
14.03.2018 11:33 7'722 filelog.txt
1 File(s) 7'722 bytes
0 Dir(s) 347'223'621'632 bytes free
Machine_id1 14.03.2018 11:33 7'722 filelog.txt
Machine_id2 14.03.2018 11:33 7'722 filelog.txt
Machine_id3 14.03.2018 11:33 7'722 filelog.txt