为了获取安装在远程 Windows 系统中的软件包列表,我使用以下命令:
wmic/node:172.22.73.15 product get name/format:csv
输出:
172.22.73.15,Compatibility Pack for the 2007 Office system
172.22.73.15,Microsoft Office Professional Plus 2007
172.22.73.15,Microsoft Office InfoPath MUI (English) 2007
172.22.73.15,Microsoft Office Access MUI (English) 2007
172.22.73.15,Microsoft Office Shared Setup Metadata MUI (English) 2007
172.22.73.15,Microsoft Office Excel MUI (English) 2007
172.22.73.15,Microsoft Office Shared 64-bit Setup Metadata MUI (English) 2007
172.22.73.15,Microsoft Office Access Setup Metadata MUI (English) 2007
172.22.73.15,Microsoft Office PowerPoint MUI (English) 2007
172.22.73.15,Microsoft Office Publisher MUI (English) 2007
172.22.73.15,Microsoft Office Outlook MUI (English) 2007
为了获取同一系统的主机名,我正在使用 以下命令:
wmic/node:172.22.73.15 computersystem get name/format:csv
输出:
172.22.73.15,普通话-PC
我需要一个批处理脚本,它会在执行脚本时向我显示与 IP 地址相关联的主机名(在输出中)以及软件包。简而言之,输出应如下所示:
172.22.73.15,Mandar-PC,Compatibility Pack for the 2007 Office system
172.22.73.15,Mandar-PC,Microsoft Office Professional Plus 2007
172.22.73.15,Mandar-PC,Microsoft Office InfoPath MUI (English) 2007
172.22.73.15,Mandar-PC,Microsoft Office Access MUI (English) 2007
172.22.73.15,Mandar-PC,Microsoft Office Shared Setup Metadata MUI (English) 2007
172.22.73.15,Mandar-PC,Microsoft Office Excel MUI (English) 2007
172.22.73.15,Mandar-PC,Microsoft Office Shared 64-bit Setup Metadata MUI (English) 2007
172.22.73.15,Mandar-PC,Microsoft Office Access Setup Metadata MUI (English) 2007
172.22.73.15,Mandar-PC,Microsoft Office PowerPoint MUI (English) 2007
172.22.73.15,Mandar-PC,Microsoft Office Publisher MUI (English) 2007
172.22.73.15,Mandar-PC,Microsoft Office Outlook MUI (English) 2007
如何实现?
更新:
我试着写了一个批处理脚本如下:
@echo off
setlocal enableextensions enabledelayedexpansion
set "node=172.22.73.15"
ping -n 1 !node! | find "TTL=" > NUL
if not errorlevel 1 (
for /f "delims=" %%x in (
'wmic /node:"!node!" computersystem get name /format:csv ^| find /i "!node!"'
) do (
for /f "tokens=1-2 delims=," %%y in ("%%x") do (
set "_name=%%b"
))
for /f "skip=2 delims=" %%x in ('wmic /node:"!node!" product get name /format:csv ^| find /i "!node!"'
) do (
for /f "tokens=1-2 delims=," %%y in ("%%x") do (
set "_ip=%%a"
set "_soft=%%b"
echo !_ip!,!_name!,!_soft! >> out.txt
)
))
输出:
%a,%b,%b
%a,%b,%b
%a,%b,%b
%a,%b,%b
%a,%b,%b
%a,%b,%b
%a,%b,%b
%a,%b,%b
最佳答案
您的代码的主要问题是您正在从 %%a 和 %%b 可替换参数中检索值,但是您的 for code> loops 使用这个范围的名称。所有都使用 %%x 或 %%y 作为起点。所以在这段代码中
for /f "tokens=1-2 delims=," %%y in ("%%x") do (
set "_name=%%b"
)
如果 for 参数是 %%y 并且您正在定义您将使用两个标记 (tokens=1-2),那么数据(如果可用)将存储在第一个标记的 %%y 和第二个标记的 %%z 中。
此外,delims 和 token numbers 需要仔细定义,因为系统名称和产品名称可以包含您用来标记字符串的相同字符。
@echo off
setlocal enableextensions enabledelayedexpansion
set "node=172.22.73.15"
ping -n 1 !node! | find "TTL=" > NUL
if not errorlevel 1 (
for /f "tokens=1,* delims==" %%a in (
'wmic /node:"!node!" computersystem get name /value'
) do if "%%a"=="Name" for %%c in (%%b
) do for /f "tokens=1,* delims==" %%d in (
'wmic /node:"!node!" product get name /value'
) do if "%%d"=="Name" (
echo(!node!,%%c,%%e
)
)
endlocal
此代码对两组数据检索使用/value 格式。它将以Field=value的形式返回记录,在本例中为Name=......,等号用于拆分记录,取第一个标记(Name 字符串)到每个 for 循环的第一个可替换参数,该行的其余部分到下一个(字母顺序)可替换参数(tokens=1,*, 将第一个标记作为第一个参数,其余的或行作为第二个参数)
关于windows - 批处理脚本 : Merging the output of WMIC calls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23902733/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
//1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
有没有一种简单的方法可以判断ruby脚本是否已经在运行,然后适本地处理它?例如:我有一个名为really_long_script.rb的脚本。我让它每5分钟运行一次。当它运行时,我想看看之前运行的是否还在运行,然后停止第二个脚本的执行。有什么想法吗? 最佳答案 ps是一种非常糟糕的方法,并且可能会出现竞争条件。传统的Unix/Linux方法是将PID写入文件(通常在/var/run中)并在启动时检查该文件是否存在。例如pid文件位于/var/run/myscript.pid然后你会在运行程序之前检查它是否存在。有一些技巧可以避免
我正在开发一个Ruby脚本,需要在没有Ruby解释器的情况下部署到系统上。它将需要在使用ELF格式的FreeBSD系统上运行。我知道有一个ruby2exe项目可以编译在Windows上运行的ruby脚本,但是在其他操作系统上这样做容易吗?甚至可能吗? 最佳答案 您是否检查过Rubinius或JRuby是否允许您预编译您的代码? 关于ruby-ruby脚本可以预编译成二进制文件吗?,我们在StackOverflow上找到一个类似的问题: https://