未设置变量
Variable is not set
这是
代码的扩展
最终我想从 Report.txt 中读取值(一个逗号分隔的文件,在一行中有类似 1,2,3,4 的值)并在 summary.yml 的某些字段中更新这些值(...field10 : var1, field11 :var2,... field25 :var3..) 等。为此,我试图存储 Report.txt 中的值,但未设置变量。任何帮助将不胜感激
@echo off
setlocal enableextensions disabledelayedexpansion
rem E:\Backups\ code \ Hazard \ test1 \ it0 ... itn
rem ^root ^ %%X ^ %%Y ^ %%~dpc
for /D %%X in ("*") do for /D %%Y in ("%%~fX\*") do for /f "tokens=1,2,*" %%a in ('
robocopy "%%~fY." "%%~fY." Report.txt /l /nocopy /is /s /nc /ns /ts /ndl /njh /njs
^| sort /r 2^>nul
^| cmd /q /v /c "(set /p .=&echo(!.!)"
') do (
copy "%%~fY\it0\summary.yml" "%%~dpc."
setlocal enabledelayedexpansion
set vidx=0
for /F "tokens=1-4 delims=," %%A in (%%~dpc\Report.txt) do (
set "var1=%%A"
set "var2=%%B"
set "var3=%%C"
set "var4=%%D"
)
set var
@echo !var1!> %%~dpc\temp.txt
@echo !var2!>> %%~dpc\temp.txt
@echo !var3!>> %%~dpc\temp.txt
@echo !var4!>> %%~dpc\temp.txt
)
您的 for /f
和 tokens=*
正在阅读整行而不拆分它。
由于逗号是分隔符,您可以使用嵌套 for
循环拆分行
setlocal enabledelayedexpansion
for /F "tokens=*" %%A in (%%~dpc\Report.txt) do (
for %%x in (%%A) do (
SET /A "vidx=vidx + 1"
set "var!vidx!=%%x"
)
)
set var
或者,要使用 for /f
直接拆分,您需要在行中指明您需要检索的标记
for /F "tokens=1-4 delims=," %%A in (%%~dpc\Report.txt) do (
set "var1=%%A"
set "var2=%%B"
set "var3=%%C"
set "var4=%%D"
)
set var
这是
最终我想从 Report.txt 中读取值(一个逗号分隔的文件,在一行中有类似 1,2,3,4 的值)并在 summary.yml 的某些字段中更新这些值(...field10 : var1, field11 :var2,... field25 :var3..) 等。为此,我试图存储 Report.txt 中的值,但未设置变量。任何帮助将不胜感激
@echo off
setlocal enableextensions disabledelayedexpansion
rem E:\Backups\ code \ Hazard \ test1 \ it0 ... itn
rem ^root ^ %%X ^ %%Y ^ %%~dpc
for /D %%X in ("*") do for /D %%Y in ("%%~fX\*") do for /f "tokens=1,2,*" %%a in ('
robocopy "%%~fY." "%%~fY." Report.txt /l /nocopy /is /s /nc /ns /ts /ndl /njh /njs
^| sort /r 2^>nul
^| cmd /q /v /c "(set /p .=&echo(!.!)"
') do (
copy "%%~fY\it0\summary.yml" "%%~dpc."
setlocal enabledelayedexpansion
set vidx=0
for /F "tokens=1-4 delims=," %%A in (%%~dpc\Report.txt) do (
set "var1=%%A"
set "var2=%%B"
set "var3=%%C"
set "var4=%%D"
)
set var
@echo !var1!> %%~dpc\temp.txt
@echo !var2!>> %%~dpc\temp.txt
@echo !var3!>> %%~dpc\temp.txt
@echo !var4!>> %%~dpc\temp.txt
)
您的 for /f
和 tokens=*
正在阅读整行而不拆分它。
由于逗号是分隔符,您可以使用嵌套 for
循环拆分行
setlocal enabledelayedexpansion
for /F "tokens=*" %%A in (%%~dpc\Report.txt) do (
for %%x in (%%A) do (
SET /A "vidx=vidx + 1"
set "var!vidx!=%%x"
)
)
set var
或者,要使用 for /f
直接拆分,您需要在行中指明您需要检索的标记
for /F "tokens=1-4 delims=," %%A in (%%~dpc\Report.txt) do (
set "var1=%%A"
set "var2=%%B"
set "var3=%%C"
set "var4=%%D"
)
set var