Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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 如何使用批处理文件中的另一个变量覆盖现有变量?_Batch File - Fatal编程技术网

Batch file 如何使用批处理文件中的另一个变量覆盖现有变量?

Batch file 如何使用批处理文件中的另一个变量覆盖现有变量?,batch-file,Batch File,在以下两个(简化示例)批处理文件中,当我想要覆盖某些变量时遇到困难: 批次试验1: 批次试验2: 输出: E: D:\Component D:\DOMAIN\comp1 预期产量: E: E:\Component E:\DOMAIN\comp1 如何使用多个变量获得预期的\u输出?对于批次\u测试2,您应该使用延迟扩展和: 这也是臭名昭著的早期变量扩展问题:批处理脚本在块开始之前提前替换变量。 这意味着%var_2%将固定为第一个值。要解决这个问题,请使用setlocal enabledelay

在以下两个(简化示例)批处理文件中,当我想要覆盖某些变量时遇到困难:

批次试验1: 批次试验2: 输出: E:
D:\Component
D:\DOMAIN\comp1

预期产量: E:
E:\Component
E:\DOMAIN\comp1


如何使用多个变量获得预期的\u输出?

对于批次\u测试2,您应该使用延迟扩展和:


这也是臭名昭著的早期变量扩展问题:批处理脚本在块开始之前提前替换变量。 这意味着%var_2%将固定为第一个值。要解决这个问题,请使用
setlocal enabledelayedexpansion
,然后用“!”而不是“%”环绕变量

 @echo off
 set var=D:
 set var_2=%var%\DOMAIN
 set var_3=%var_2%\sub_domain
 call batch_test2.bat
 @echo %var%
 @echo %var_2%
 @echo %var_3%
  @echo off
  if 1==1 (
      set var=E:
      set var_2=%var%\Component
      set var_3=%var_2%\comp1
  )
  @echo off
  setlocal enableDelayedExpansion
  if 1==1 (
      set var=E:
      set var_2=!var!\Component
      set var_3=!var_2!\comp1
  )
  endlocal & (
     set var=%var%
     set var_2=%var_2%
     set var_3=%var_3%
  )