batch-file - 如何在 For 循环的变量中批量添加引号?
问题描述
我正在编写一个批处理脚本,该脚本将获取服务器列表,遍历它们,找到每个服务器上以某个值开头的每个服务,然后查询该服务。但是,鉴于可以使用空格创建服务名称,我需要能够在 for 变量周围加上引号。最好的方法是什么?
我尝试了各种在变量前后放置转义字符的方法。我还尝试将循环变量设置为单独的变量。
@ECHO off
ECHO Please list servers to query.
SET list=
SET /P list=Server Names:
FOR %%a IN (%list%) DO (
FOR /F "Skip=1 Delims-" %%b IN ('wmic service where "name like 'ADOBE%%'" get Name ^| findstr /r /v "^$"') DO (
ECHO %%b
sc \\%%a query ^"%%b^"
)
)
pause
GOTO :eof
输出显示在 %list% 中输入的服务器之一上以“ADOBE”开头的任何服务的服务名称。
我得到的是“EnumQueryServiceStatus:OpenService FAILED 1060:指定的服务不作为已安装的服务存在。”
当我允许脚本回显时,我看到:HO AdobeARMservice " \[servername] query "AdobeARMservice
解决方案
主要问题是由于wmic
. %%b
如果您在代码中的行中添加引号echo
,您会看到输出中缺少结束引号。
工作代码:
@echo off
setlocal enabledelayedexpansion
FOR /F "Skip=1 Delims=" %%b IN ('wmic service where "name like 'ADOBE%%'" get Name ^| findstr /r /v "^$"') DO (
for /f "delims=" %%c in ("%%b") do ( rem this will get rid of CR character
set d=%%c
:loop
if "!d:~-1!"==" " ( rem here we'll remove the trailing spaces
set d=!d:~0,-1!
goto :loop
)
echo "%d%"
sc query "%d%"
)
)
推荐阅读
- pandas - 为什么有给,名称'pd'未定义错误?
- c# - 如何制作泛型类的动态列表列表,其中 T: struct?
- acumatica - Acumatica - 复合主键
- java - 如何使用 reactor-netty TcpClient 链接多个发送和接收操作
- c - 指针有问题吗?
- node.js - 通过 Node js Express 访问 AWS S3 签名 URL
- elasticsearch - 带有规范化器的 ElasticSearch 关键字文件不适用于通配符查询
- python-3.x - 我应该如何在 Python 中使用 id() 函数?
- python-3.x - 使用 boto3 在 dynamodb 中返回所有具有最大排序键的哈希键项
- r - 我想在 for 循环中的 ggplot2 中绘制多个 geom_line,所以我能够绘制线条但面临着色问题。任何人都可以建议如何做