无法将用户input值回显到批处理脚本中的文件

我正在写一个batch file,它将根据多个用户input值生成/写入属性文件。 但是,它不logginginput的值。 结果看起来像

prop1= prop2= 

我想知道是否有什么我需要知道设置,防止这个工作。

奇怪的是,如果我多次运行这个特定的脚本,从echo输出的值似乎始终是上次用户input。

码:

 @echo off IF NOT EXIST data_file ( set /p prop1=Enter value: set /p prop2=Enter value: (echo prop1=%prop1%) > data_file (echo prop2=%prop2%) >> data_file ) 

Solutions Collecting From Web of "无法将用户input值回显到批处理脚本中的文件"

没有经验的批发商的经典问题:)

行解析后, %prop1%展开。 你的问题是在圆括号内的翻译是一次解析。 所以你看到的价值是在你进入IF语句之前存在的价值。

你有两个简单的解决方案。

1)通过反转逻辑和使用GOTO消除封闭的支撑

 @echo off IF EXIST file goto skip set /p prop1=Enter value: set /p prop2=Enter value: (echo prop1=%prop1%) >file (echo prop2=%prop2%) >>file :skip 

2)使用延迟扩展 – 在parens中每行之前执行

 @echo off setlocal enableDelayedExpansion IF NOT EXIST file ( set /p prop1=Enter value: set /p prop2=Enter value: (echo prop1=!prop1!)>file (echo prop2=!prop2!)>>file ) 

您需要使用SETLOCAL ENABLEDELAYEDEXPANSION或使用CALL来扩展变量。

 @echo off IF NOT EXIST data_file ( set /p prop1=Enter value: set /p prop2=Enter value: ( Call echo prop1=%%prop1%% Call echo prop2=%%prop2%% ) > data_file )