【问题标题】:Batch For loop writing to text file批处理循环写入文本文件
【发布时间】:2014-10-26 16:20:42
【问题描述】:

你好,如果我在没有循环的情况下运行我的编码,我会得到我想要的正确输出。添加循环后,我会在文本文件中丢失 %temp%。

此代码有效:

CALL tuo "%_ydeck%" "%_enemy%%%k" ordered -v -t %_threads% -o="%~dp0data"\%_member%.txt yf "%_yfort1%,%_yfort2%" climb %_climb%>>temp.txt
for /F "delims=" %%t in ('findstr "Optimized Deck:" temp.txt') do set _temp=%%t
CD Results
ECHO %_member%,%Date%,%_enemy%%%k,%_yfort1% and %_yfort2%,%_temp%>>Raid.txt
CD %~dp0
del temp.txt

添加循环后,我不会得到 %_temp%。我需要做什么来解决这个问题。我试过 SetLocal EnableDelayedExpansion 没有运气,除非我把它放在错误的地方。

这里是不能使用循环的代码。

for %%k in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26) do (
CALL tuo "%_ydeck%" "%_enemy%%%k" ordered -v -t %_threads% -o="%~dp0data"\%_member%.txt yf "%_yfort1%,%_yfort2%" climb %_climb%>>temp.txt
for /F "delims=" %%t in ('findstr "Optimized Deck:" temp.txt') do set _temp=%%t
CD Results
ECHO %_member%,%Date%,%_enemy%%%k,%_yfort1% and %_yfort2%,%_temp%>>Raid.txt
CD %~dp0
del temp.txt
)

任何帮助将不胜感激。

【问题讨论】:

    标签: loops batch-file for-loop text


    【解决方案1】:
    SetLocal EnableDelayedExpansion
    

    然后用!_temp!代替%_temp%

    说明: 批量编写%variable% 时,它将在编译时扩展变量。 如果您的变量会发生变化(如果您稍后将_temp 设置为其他值),则需要启用延迟扩展。这样您就可以决定使用!variable! 在运行时而不是编译时扩展变量。

    【讨论】:

    • 请编辑您的答案以添加对您的代码如何工作以及它如何解决 OP 问题的解释。很多 SO 发帖人都是新手,看不懂你贴的代码。
    猜你喜欢
    • 2020-06-21
    • 2021-01-01
    • 1970-01-01
    • 2022-10-21
    • 2023-03-23
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多