【发布时间】:2016-04-30 21:28:47
【问题描述】:
我问了一个问题,但没有完全解释,所以这是我的问题。
我在里面有 settings.ini 里面有变量的部分
[HideAndSeekEvent]
EventRunning=[Hide And Seek Event] Has started at [ %placenameHS% ].
得到另一个名为 ini.bat 的批处理文件
@setlocal enableextensions enabledelayedexpansion
@echo off
set file=%~1
set area=[%~2]
set key=%~3
set currarea=
for /f "usebackq delims=" %%a in ("!file!") do (
set ln=%%a
if "x!ln:~0,1!"=="x[" (
set currarea=!ln!
) else (
for /f "tokens=1,2 delims==" %%b in ("!ln!") do (
set currkey=%%b
set currval=%%c
if "x!area!"=="x!currarea!" if "x!key!"=="x!currkey!" (
echo !currval!
)
)
)
)
endlocal
还有另一个名为 Getdata.bat 的 bat 文件,用于从 .ini 文件中调用变量,本节有
for /f "delims=" %%a in ('call ini.cmd settings.ini HideAndSeekEvent EventRunning') do (
set EventRunningeHS=%%a
)
在我的主 .bat 文件中,我正在调用 Getdata.bat 文件
在我的主要 .bat 中,我得到了类似的东西
SET placenameHS=Hotan
echo %EventRunningeHS%
应该会显示
[Hide And Seek Event] Has started at [ Hotan ].
但它显示:
[Hide And Seek Event] Has started at [ %placenameHS% ].
[注意] 我没有设置我通过 SQLCMD 查询得到的地名
osql -S %Server% -U %SQLUser% -P %SQLPass% -d Dother_Events -Q "SET NOCOUNT ON; SELECT Place_Name FROM _HideANDSeek_Map WHERE ID = %IDHS%" %osqluser% -b -w 9999 -h-1 -o .\Logs_in_use\HSLN7.txt
set /p HSLN7=<.\Logs_in_use\HSLN7.txt
【问题讨论】:
-
call echo %EventRunningeHS%应该扩展内部%placenameHS% -
@JosefZ:是的,我已经在my answer 中为其他 OP 关于同一主题的问题提供了此解决方案...
-
@Aacini 我预感这种问题一定在 SO 的某个地方有答案。懒得搜索:) 但是,我觉得 OP 的问题已经详细阐述,不值得通过标记为重复来惩罚。请给出你的答案...
-
@JosefZ:如果您阅读other question,您会发现 OP 没有对我的回答发布任何反馈。相反,他发布了一个新问题作为答案,没有解释他为什么这样做,然后他发布了这个新的[重复]问题!我不知道如何处理在评论中发布“我解释了一切”,但没有解释任何内容的用户...
:/ -
在您的其他问题中,我发布了一个答案。你测试过吗?有效?如果不是,问题是什么?如果您有兴趣解决您的问题,这是您应该发布的基本反馈,但您确实 NOT 发布了关于我的答案的一个详细信息!正如@JosefZ 的评论所指出的,这个问题的解决方案与我在另一个问题上的回答相同。你测试过吗?这里的问题是您似乎对解决方案并不真正感兴趣。否则,您现在应该向 JosefZ 的评论或我的回答发布任何有用的反馈(而不是发布无用的 cmets)。
标签: batch-file batch-processing