如何从wmic输出中删除空行?
这是我的字符串,以获取TeamViewer(任何版本)服务可执行文件的位置: for /f "skip=1 delims=" %A in ('wmic path win32_service where "name like 'TeamViewer%'" get pathname') do set POSITION=%A 问题由wmic引起 C:\Users\giovanni>for /f "skip=1 delims=" %A in ('wmic path win32_service where "name like 'TeamViewer% '" get pathname') do set POSITION=%A :\Users\giovanni>set POSITION="C:\Program Files\TeamViewer\Version8\TeamViewer_Service.exe" :\Users\giovanni>set POSITION= C:\U
0 2023-05-21
编程技术问答社区
批处理 - 循环将WMIC输出变成可变的无效
我一直在尝试将以下两个命令的输出转换为变量,以便我可以在批处理文件中使用它们,但是我没有任何运气: WMIC /namespace:\\root\SecurityCenter2 PATH AntiVirusProduct WHERE (displayName="Emsisoft Anti-Malware" or displayName="Emsisoft Internet Security") GET displayName /value WMIC /namespace:\\root\SecurityCenter2 PATH AntiVirusProduct WHERE (displayName="Emsisoft Anti-Malware" or displayName="Emsisoft Internet Security") GET pathToSignedReportingExe /value 基本上可以安装两个不同的安全产品,并且批处理文件需要确定哪个.由于在安装过程
14 2023-05-15
编程技术问答社区
WMIC.bat文件不能正常导出/输出
我正在尝试在CMD中运行一个批处理文件,其中包括以下内容, wmic csproduct WMIC CPU获取名称 WMIC DISKDRIVE GET模型,尺寸 ipconfig/all 当我复制并将其粘贴到CMD中时,我可以观看命令运行.我可以成功地将所有数据复制并粘贴到文本文档中,而没有问题. 问题:当我尝试将此精确文件导出/输出到.txt或.rtf时, c:> 1.bat> 1.txt " ipconfig"可以正确拉动,但是WMIC命令并不能正确地给我任何问题和输出.但是,无论我是导出/输出此批次作为.txt还是.rtf, WMIC命令在输出文件中的每个字符之间留下空间或nul. 我将打开读取 的文件 c:\ windows \ system32> wmic csproduct c a p t i o n d e s c r i p t i o n i d e n t i f y i f y i n g n u m b e
2 2023-05-15
编程技术问答社区
如何用wmic找到一个进程的pid,然后用taskkill杀死它
我需要使用WMIC命令找到一个过程PID,然后用Taskkill杀死此过程.我几乎做到了这一点,但是唯一的问题是PID变量的末尾有一个新线. 到目前为止,我做到了: c:\patryk>for /F "skip=1 tokens=*" %a in ('wmic process where "CommandLine like '%sourceprocessor%' and name like '%java%'" get ProcessId') do taskkill /pid | set /p pid=%a 因此,这是通过WMIC的输出循环的,该输出包含3行:标题(ProcessID),​​找到PID(一个数字)和一个空线.我跳过第一行,因为它只是标题.现在,我想用第二行中的PID杀死一个过程.而且存在一个问题,它在行的末尾具有新线标记,因此整个命令不起作用. 有人可以给我一些建议,我该如何实现?如何删除此新线标记? 解决方案 for /F "skip=2 tokens=
0 2023-04-22
编程技术问答社区
为什么在FOR循环中运行WMIC时,输出感兴趣的数据后显示 "ECHO已关闭"?
这是代码: @echo off setlocal EnableDelayedExpansion for /f "tokens=* skip=1 delims=\" %%b in ('wmic /node:%CompName% COMPUTERSYSTEM GET USERNAME') do echo %%b 输出: domain\username ECHO is off. 预期结果: username 注意:变量CompName将在之前设置.这可以忽略. 该代码是我为此批处理文件编写的较大代码的一部分,我只需要拉username将其设置为变量. 伪代码: set TargetUsername = (results from above) future code (possibly used for other parts of the code) 解决方案 在运行批处理代码时有多个导致ECHO is off.输出的问题. 第一个是使用
10 2023-04-21
编程技术问答社区
试图在批次中连续报告CPU时钟速度
我正在尝试制作CPU时钟速度跟踪器,但是我需要在代码上进行一些帮助. setlocal enableextensions enabledelayedexpansion :a for /f %%a in ('copy /Z "%~dpf0" nul') do set "ASCII_13=%%a" set /p "=!ASCII_13!"
26 2023-04-12
编程技术问答社区
(批量)多核系统的 "wmic cpu "问题
我在带有2个逻辑CPU内核的虚拟机上运行" WMIC CPU获取LoadPerCentage/enver:1"命令,并且我只能获得第一个核心的LoadPercentage,如您在附加的图像上所见: 如何获得"真实的" CPU利用率(即2个内核的平均使用)? 否则,我还能单独阅读第二个CPU使用? 谢谢 解决方案 我可以回答我的问题可能很有趣,但是由于我进行了搜索和测试,所以我想再分享一个选项: 我使用了" typeperf",我发现结果非常接近任务管理器CPU利用率. 控制台的命令是: typeperf "\Processor Information(_Total)\% Processor Utility" 或下面的批处理文件: typeperf "\Processor Information(_Total)\%% Processor Utility" 坏点是: 1)输出格式不是很方便(例如" 01/29/2019 21:24:2
6 2023-04-11
编程技术问答社区
用wmic命令查找前10个进程
我知道我可以做" WMIC流程列表简介"以显示流程列表.有没有办法只使用最多的内存查看前10个进程? 解决方案 @echo off setlocal EnableDelayedExpansion (for /F "skip=1 tokens=1,2" %%a in ('wmic process get name^,workingsetsize') do ( set "size= %%b" echo !size:~-10! %%a )) > wmic.txt set i=0 for /F "skip=1 delims=" %%a in ('sort /R wmic.txt') do ( echo %%a set /A i+=1 if !i! equ 10 goto :end ) :end del wmic.txt 输出示例: 96931840 iexplore.exe 82161664 explor
18 2023-03-22
编程技术问答社区
对于 "WMIC已被废弃",我可以做些什么?
我一直依靠这两个命令: wmic memorychip get capacity // Outputs how much RAM there is (in a convoluted manner). wmic diskdrive get Status,Model // Checks whether the HDDs/SSDs on the system are (supposedly) still "OK" and working. 今天,我随便键入" WMIC",看看是否可以将JSON输出输出到上述命令.它打印的第一件事是红色文字,是: WMIC is deprecated. 我对此感到非常震惊.它被弃用了吗?好吧...那么我绝对不应该依靠它.那么,这两个命令的"现代替代方案"是什么?它们甚至存在吗?他们为什么只是告诉我们,它是"弃用"的,零进一步的信息? 解决方案 如注释中所述,WMIC是实用程序,它是与WMI通信的接口.不弃用的不是
14 2023-03-22
编程技术问答社区
使用wmic获取传递给可执行文件的参数
我正在尝试获得由另一个程序启动的可执行文件的命令行参数. 我尝试了 this 答案中提到的命令,但我听不懂语法:( 我正在尝试获取一个过程的命令行参数,我有PID和进程名称,在这种情况下,我正在尝试获取用于测试命令的Ping命令的参数... 预先感谢:) 解决方案 尝试以下方法: wmic process where "name='ping.exe'" get commandline /format:list ,或者如果您喜欢通过PID查询: wmic process where "processid='NNNN'" get commandline /format:list wmic使用一种称为WQL的查询语言,与SQL相似.您可以做wmic process where "name like 'ping%'" get commandline之类的通配符(但请务必在批处理脚本中加倍%%),更改输出样式(列表,CSV,甚至HTML)和其他魔术.有
10 2023-03-22
编程技术问答社区
如何在Windows批处理脚本中格式化日期/时间输出?
我正在编写一个简单的批次脚本,以获取重新启动PC的最后日期/时间.找到了两种简单的方法: systeminfo | find /i "Boot Time"输出: 系统启动时间:5/4/2019,5:04:44 AM wmic os get lastbootuptime输出: Lastbootuptime 20190504050444.500000-420 我基本上希望将第二个输出的格式化与第一个输出相同或相似(可以读取).在较新的PC上,第一台运行良好,但我们的大多数客户仍在运行Windows 7,并且第一个客户也需要加载,而第二台客户甚至在OS上也比Windows 7年龄. 都非常瞬间. 我正在考虑将第二个输出输出到变量并进行正则事情: for /f %%i in ('wmic os get lastbootuptime') do set lastboottime=%%i ,但我不断获得"%%i was unexpected
82 2023-03-22
编程技术问答社区
在Windows命令行中获取接口名称、IP和MAC
我想在计算机上获取所有接口,IP和MAC地址的列表.我有很多机器可以从(大约600左右)获取此信息,并且无法在设备上使用批处理文件.我想发送命令并恢复回声输出. 我需要的所有信息都在ipconfig /all中,但是我不确定如何使用for loop来解析它.我仍然是那个复杂的循环的新手.从本质上讲,如果可能的话,我需要获得一个衬里输出.有任何建议吗? hostname, interface1 name, IP, Mac, interface2 name, ip mac,...等. 编辑: 我对WMIC输出有一些运气,但是我有问题使它正确显示在文件中.如果我运行这些. wmic computersystem get name wmic nic where netenabled=true get netconnectionID wmic /output:C:\wmictest.csv nicconfig where IPEnabled=True get ip
16 2023-03-22
编程技术问答社区
在windows7中出现wmic错误(无效的XSL格式)。
wmic process get /format:csv Windows 7中的此命令有什么问题? 我得到: 无效的XSL格式(或)文件名. 解决方案 这是WMIC命令中的一个错误.有人建议将XSL文件复制到%windir%\ system32中(或等效于64位. WMIC流程获取ProcessID,Description,Commandline,executable Pather,parentProcessID/格式:"%windir%\ system32 \ wbem \ en-us \ en-us \ csv" 当然,对于不同的地区," en-us"将有所不同. 如果要将输出重定向到文件,请在 Process 关键字关键字 之前添加开关/output:"您的文件名" 其他解决方案 这是解决方法: 复制或将文件移至C:\Windows\system32\wbem\文件夹中. 更改您的区域设置以匹配您的Windows语言版本,然后登录
14 2023-03-21
编程技术问答社区
用Windows命令行查看已安装的软件热补丁/补丁
在Windows上,导航到 Control面板>程序和功能>视图已安装的更新页面,我可以看到应用的所有软件hotfix,包括Windows更新. 我想使用命令查看此信息.使用以下命令,我可以查看应用的所有Windows更新: wmic qfe list full 唯一的问题是,上面的命令未列出应用于机器的软件设备补丁.例如,在查看安装更新页面上,我可以看到适用于SolarWinds的补丁,并且在命令行中看不到相同的信息. 解决方案 请参阅跳过最后一个空的WMIC命令输出, @echo off Title wmic to get HotfixID Setlocal EnableDelayedExpansion echo "patches" : { set "patches=wmic qfe get HotfixID" for /f "skip=1" %%i in ('%patches%') do for /f "delims=" %%j in ("%%i")
6 2023-03-21
编程技术问答社区
批量文件。START "" /W CMD /C 似乎在门循环内不起作用。
我有一个批处理文件,其内容为: SETLOCAL enabledelayedexpansion SET /A FT=500 FOR /F "skip=1 tokens=1-6" %%A IN ('START "" /wait WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table ') DO ( IF NOT !FT!==500 GOTO proceed SET FD=%%F-%%D-%%A SET FT=%%B:%%C:%%E :proceed SET /A FX="DS" ) echo %FD% %FT% : %* >> "%LOGFILE%" endlocal 最初该行 FOR /F "skip=1 tokens=1-6" %%A IN ('START "" /wait WMIC Path Win32_LocalTime Get Day^,Ho
30 2023-03-16
编程技术问答社区
定义的变量在批处理脚本中没有输出
出于资产库存目的,我正在尝试在批处理中创建一个脚本,该脚本通过本地.txt文件中的计算机名称运行,获取登录机器的最后一个人,并将其输出到一个带有Machine Name: NAME | Last Login: USER 格式的文本文件 我已经撞到了一堵墙,我无法弄清楚发生了什么.机器名称已正确输出,但"最后登录"部分不是.这是我的代码: @echo off for /f %%a in (Assets.txt) do ( for /f %%b in ('wmic.exe /node:"%%a" computersystem get username') do set lastlogin=%%b echo Machine Name: %%a Last Login: %lastlogin%) pause 任何帮助将不胜感激.谢谢. 更新2 for /f "delims=" %%a in (Assets.txt) do ( for /f "skip=1 deli
12 2023-03-16
编程技术问答社区
如何获得鼠标的唯一ID
我想获得鼠标的唯一ID,只要每个鼠标品牌在实验室中都是相同的. 我尝试使用WMIC获取设备属性.我的VBS脚本是: strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_PointingDevice",,48) Wscript.Echo "DeviceID: " & objItem.DeviceID 我尝试使用不同的鼠标品牌生成此脚本,并输出唯一的设备ID.但是,当我使用相同的型号/品牌时,会生成相同的设备ID.请帮助我找到一个独特的数据,用于识别实验室中的每只鼠标. 解决方案 我认为Thangadurai对他的评论是对的,您可以做您最初的问题...但是,您可以尝试找到所需的鼠标ID 运行下一个代码
22 2023-03-16
编程技术问答社区
使用PS,cmd,vbs等脚本,在Win7中自动更新打印机驱动(打印机设置)和打印机偏好的问题?
WMI可以做到,但是我有一个问题,PC正在打开,但已登录.如果我尝试运行: wmic /node:%strIP% printer where DeviceID="lp1" set DriverName="Lexmark Universal v2" 它失败了有关"通用故障"的消息.我进入RDP,然后从我的末端运行相同的命令,并且可以正常运行.我正在使用的PowerShell版本较旧,因此它没有某些打印机CMDLET,而更新PS当前不可能解决.有没有办法远程登录某人,而无需实际进入RDP?通过PS,CMD,PSEXEC等? 我所采用的另一个途径是使用regedit,但是我遇到了一些麻烦,也就是说,我无法弄清楚要复制什么.在Regedit中,我可以更改启用双工和tray2(在打印机设置)的设置,但是我无法弄清楚如何更改打印机偏好中的设置以沿着长边缘打印双面并进行操作. 我为弄清楚要更改的内容,我在regedit中的打印机名称上找到了一个数据值,并在更改设置之前导出了键.然
12 2023-03-16
编程技术问答社区
将被存储在文件中的UUID
我正在尝试获取系统的UUID并将其存储在文件中.使用命令wmic csproduct get UUID我将输出文件作为(uuid某些空格然后值)i.e UUID 4C4C4544-0031-5910-8048-B1C04F565331. 但是我在输出文件中需要单独的值(4C4C4544-0031-5910-8048-B1C04F565331). 解决方案 过滤行,您需要: wmic csproduct get uuid |find "-" >file.txt 编辑回复您的评论: 有一种更通用的方法来获得您想要的东西: for /f %%i in ('wmic cpu get ProcessorID /value^|find "="') do set id=%%i
8 2023-03-16
编程技术问答社区
从WMIC查询中排除一些输出
我通过WMIC(感谢Compo)获得Windows用户及其本地路径列表. 我希望在此WMIC命令中的输出中排除某些用户名: @For /F "Skip=1Tokens=1,2" %%G In ('%__AppDir__%wbem\WMIC.exe UserAccount Where^ "LocalAccount='True' And Not Name Like '[_]%%'" Get Name^,SID 2^>Nul' )Do @For /F %%I In ("%%H")Do @For /F "Tokens=2Delims==" %%J In (' %__AppDir__%wbem\WMIC.exe Path Win32_UserProfile Where^ "SID='%%I' And Special!='True'" Get LocalPath /Value 2^>Nul' )Do @For /F "Tokens=*" %%K In ("%%J")Do @Echo
6 2023-03-16
编程技术问答社区