旁注-不是最好的编码器
我正在制作批处理文件脚本,需要从runfig.conf
读取
我尝试使用SETLOCAL EnableDelayedExpansion
,但这似乎无法解决。其他谷歌搜索没有结果
这会将变量保存到文件中
echo %fname% > runfig.conf && echo Saving "%fname%" to file...
echo %name% >> runfig.conf && echo Saving "%name%" to file...
echo %mem% >> runfig.conf && echo Saving "%mem%" to file...
这将读取文件:
< runfig.conf (
set /p fname=
set /p name=
set /p mem=
)
不幸的是,不是这样的:
database
server
4
它另存为:
database
server
4
注意最后两个空格吗?那些弄乱了我的程序。因此,为了重申我的问题,我该如何删除/预防这些问题?
答案 0 :(得分:2)
类似于@SomethingDark的当前答案,这将写入配置文件,同时还将通知消息重定向到控制台:
@Echo Off
( Echo=%fname%&&Echo Saving %fname% to file...>CON
Echo=%name%&&Echo Saving %name% to file...>CON
Echo=%fname%&&Echo Saving %mem% to file...>CON)>"runfig.conf"
( Set /P "fname="
Set /P "name="
Set /P "mem=")<"runfig.conf"
Set /P
从用户输入中传播的,则最终用户什么也不能输入,因此,在将响应写入配置文件之前,应先验证响应是否满足您的要求:
Rem Undefining any existing variable named fname.
Set "fname="
Rem Requesting first name input from user.
Set /P "fname=What is your first name? "
Rem Below here you should be verifying the input meets your requirements.
答案 1 :(得分:1)
发生这种情况是由于您在%fname%
和>
之间放置了空格。有几种方法可以解决此问题。
第一种方法是简单地删除空格:
echo %fname%>runfig.conf && echo Saving "%fname%" to file...
echo %name%>>runfig.conf && echo Saving "%name%" to file...
echo %mem%>>runfig.conf && echo Saving "%mem%" to file...
但是,如果三个变量中的任何一个都以数字结尾,则会产生意外的结果,因此这可能不是您的最佳选择。
您还可以将重定向语句移至行首,再次删除变量后的所有空格:
>runfig.conf echo %fname%&& echo Saving "%fname%" to file...
>>runfig.conf echo %name%&& echo Saving "%name%" to file...
>>runfig.conf echo %mem%&& echo Saving "%mem%" to file...
如果您不需要显示状态(并且您也不需要,因为重定向不会在脚本的中间异常失败),则可以将所有内容放在单个代码块中:
(
echo %fname%
echo %name%
echo %mem%
)>runfig.conf
echo Values added to file.
答案 2 :(得分:-4)
没关系,我在google的第三页上找到了答案。
对于那些想知道的人,请运行set a=%a: =%
,其中a
是您的变量。
谢谢,还是!