【问题标题】:Expected end of statement error Info logging script预期语句结束错误信息记录脚本
【发布时间】:2013-12-13 15:34:24
【问题描述】:

这是我的脚本

echo Log In %DATE% at %TIME% with %USERNAME% FROM %COMPUTERNAME% >> \\CORONA\SHARE2\TYLER\"IP DIR"\IPS.TXT
IPCONFIG |FIND "IP" > \\CORONA\SHARE2\TYLER\"IP DIR"\IPS.TXT

基本上我需要在我们的网络上安装这个。每次我们域上的用户登录时,我都会设置一个任务序列来运行它...

我需要它来登录文档ips.txt(不必是那个名字,它可以是任何东西。但是位置是它需要的位置) 需要记录IP、日期、时间、哪个用户、来自哪台电脑。

有什么建议吗?我在第 1 行字符 10 中得到错误。

【问题讨论】:

  • 我建议删除 vbscript 标记并将其替换为 windowsbatch-file 标记。

标签: batch-file logging


【解决方案1】:

您似乎正在尝试创建 Windows 批处理文件(而不是 VBScript 文件)。

因此,请为您的文件使用 .bat 扩展名,而不是 .vbs。然后为您的新批处理文件尝试此内容:

@echo off

setlocal
set LOGFILE=\\CORONA\SHARE2\TYLER\IP DIR\IPS.LOG

for /f "usebackq delims=: tokens=2" %%i in (`ipconfig ^| findstr Address`) do (
set IP=%%i
)

echo Log In %DATE% at %TIME% as %USERNAME% from %COMPUTERNAME% with IP address%IP%>> "%LOGFILE%"

预期输出

Log In Fri 12/13/2013 at 21:50:35.48 as somebody from COMPNAME with IP address 192.168.1.101

文档

这是For keyword 的文档。

【讨论】:

  • 这样使用ipconfig的一个问题是返回的地址可能不是你想要的,因为我的电脑返回了4个地址,上面的代码总是取最后一个。
  • @foxidrive - ping %COMPUTERNAME% 更可靠吗?或者您能推荐另一个在 Windows 操作系统上普遍存在的实用程序吗? (可以说,这不是 Windows 批处理文件最直接的问题。)
  • 我在答案中添加了一些代码,可以用来获取IP地址。
【解决方案2】:

这是一种获取本地计算机连接的 IPv4 和 IPv6 的 IP 地址以及网关 IP 地址的方法。

@echo off
 WMIC NICConfig where "IPEnabled='True'" get Description, IPAddress, IPSubnet, DefaultIPGateway /value|FIND "="
pause

正如 David 在他的评论中指出的那样,您可以使用 ping %computername%,但这会给出我的 Windows 8.1 机器上的 IPv6 地址。

【讨论】:

  • 感谢您提供指向 WMIC 的指针。这是WMIC reference。我注意到“要运行 WMIC 需要管理员权限。”我想知道这是否可能是 OP 的问题。另一个问题:如果用户的机器配置了 DHCP,登录后获取 IP 地址可能会有延迟。因此,可能无法按照 OP 的要求在登录时捕获 IP 地址。
  • @davidrr 现在在我看来,他想记录传入的 IP 地址,而不是本地机器(这是我的建议以及 ipconfig 列表)。 %computername% 变量也只会给本地机器。
  • foxidrive - 你可能是对的......我认为 OP 需要进一步澄清他的目标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
相关资源
最近更新 更多