Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何将表达式的结果存储到Windows批处理脚本中的变量中?_Batch File_Windows Scripting - Fatal编程技术网

Batch file 如何将表达式的结果存储到Windows批处理脚本中的变量中?

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%%%

我有一个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%%%
)
我想存储下面表达式的结果

%%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命令之前。如果在循环之前没有定义模式变量,您最多只能得到错误的结果,而且很可能是语法错误。