Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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,我有以下代码: for /f "tokens=1 delims=," %%i in (%T1R%.orignal) do ( set LINE="%%i" set LINE1=%LINE% echo %LINE1% >> %T1R% ) 它正在产生以下结果: ... set LINE=" <Reference Include="Elmah">" set LINE1= echo 1>>C:\Temp\sync-msbu

我有以下代码:

  for /f "tokens=1 delims=," %%i in (%T1R%.orignal) do (
    set LINE="%%i"
    set LINE1=%LINE%
    echo %LINE1% >> %T1R%
  )
它正在产生以下结果:

...
set LINE="    <Reference Include="Elmah">"
set LINE1=
echo   1>>C:\Temp\sync-msbuild-1R.txt
...
。。。
set LINE=“”
第1行=
echo 1>>C:\Temp\sync-msbuild-1R.txt
...

我已经研究了其他类似的问题,似乎这应该有效,但它不在我的系统上。

我不确定您的代码到底应该实现什么(为什么不使用
Line
而不是
LINE1
,或者更好的是直接使用
%%I
),但是如果您想使用在循环中定义的变量,您应该使用:

然后使用
而不是
%

SET LINE1=!LINE!

我找不到允许我在DO块中使用两个SET命令的答案,因此我最终通过使用PowerShell完成任务来解决问题:

PowerShell -Command "((Get-Content %T1R%) | Foreach-Object {$_ -replace '""[^\w]*>', ''} | Set-Content %T1R%)"

我需要替换/修剪%%I中的值。例如,设置行=%LINE:“>=%但是,我发现变量行从未设置。即使在我添加了上述内容之后,它也无法在我的系统上工作。行似乎没有获取存储在%%i中的值…如果我只有一个set命令,它就会工作。当我有两个set命令时,它不起作用……这可能与您的输入有关,其中包含要转义的字符,例如

PowerShell -Command "((Get-Content %T1R%) | Foreach-Object {$_ -replace '""[^\w]*>', ''} | Set-Content %T1R%)"