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