Batch file 如何将表达式的结果存储到Windows批处理脚本中的变量中?
我有一个windows批处理脚本,它将\替换为\ 我想知道将replace表达式的结果存储到变量中需要什么 下面是我的脚本Batch file 如何将表达式的结果存储到Windows批处理脚本中的变量中?,batch-file,windows-scripting,Batch File,Windows Scripting,我有一个windows批处理脚本,它将\替换为\ 我想知道将replace表达式的结果存储到变量中需要什么 下面是我的脚本 FOR /F "tokens=* delims=" %%x in (E:\Windows_Scripts\server.txt) DO ( Set "servername=%%x" Set "Pattern=\" Set "Replace=_" call echo %%servername:%Pattern%=%Replace%%%
FOR /F "tokens=* delims=" %%x in (E:\Windows_Scripts\server.txt) DO (
Set "servername=%%x"
Set "Pattern=\"
Set "Replace=_"
call echo %%servername:%Pattern%=%Replace%%%
)
我想存储下面表达式的结果
%%servername:%Pattern%=%Replace%%%
变成一个变量。如何做到这一点?在延迟扩展激活的情况下,在每次迭代时设置变量
@echo off
setlocal enabledelayedexpansion
Set "Pattern=\"
Set "Replace=_"
FOR /F "tokens=*" %%x in (server.txt) DO (
Set "servername=%%x"
Set "$output=!servername:%Pattern%=%Replace%!"
echo !$output!
)
SET命令用于为变量赋值。假设文件server.txt包含多行,存储到单个变量将在每次迭代中覆盖内容,因此只有最后一个条目保持不变。是。考虑,如果文件包含Serv1、Serv2、Serv3\微软,则输出为Serv1、Serv2、Serv3MyPosipe。我需要为每次迭代将这些输出存储到一个变量中。因此,所有服务器名称都在一行中,用逗号分隔?您应该首先从循环中取出Set Pattern=\和Set Replace=\并将它们放在for命令之前。如果在循环之前没有定义模式变量,您最多只能得到错误的结果,而且很可能是语法错误。