我最近一直试图制作一个程序来简单地将文本存储到文件中供以后查看,将其存储为.rar文件,以防止那些不了解如何从.rar中提取文本的人(即较少“技术性”的人......)
但是,我在程序中遇到一个错误,当我输入<word> not expected at this time
时,导致add/<word> <word>...
后跟.exe关闭(即任何多字符串,其间有空格) [add/<word>
但是,它确实正常运行]。
是否有一条特殊的规则必须遵循将多字符串存储到.rar或一般文件中(但是,我知道有一条规则用于创建/重命名文件夹/目录)?
计划细分:
:command
cls
set /p journal=<journal.rar
echo %journal%
echo.
set /p command=What would you like to do?
cls
if %command%==exit exit
if %command%==help goto help
if %command%==delete echo START; > journal.rar
if %command:~0,4%==add/ echo "%journal%""%command:~4%;" > journal.rar
if %command:~0,5%==edit/ echo %journal:%command:~5%=%;" > journal.rar
goto command
答案 0 :(得分:0)
对不起。你的问题不明确。它有几个令人困惑的地方,比如“后跟.exe关闭”(.exe正在关闭?),以及你的问题与.rar文件无关,也不是“存储多字”这一事实字符串”。但是,我可以在其中看到以下几点:
当变量值以百分号符号展开时:%command%
您必须知道变量首先展开,然后结果行是解析。这意味着变量的值可能会在行中引入错误。例如,在这一行:if %command%==exit exit
中,如果命令变量的值为add/one two three
,则解析的行为:if add/one two three==exit exit
,当然会发出错误! (输入if /?
了解更多详情。)
避免此问题的方法是将变量和比较值括在引号中;这样,如果值包含多个带空格的单词,则整个值将分组在IF命令中以进行比较:if "%command%" == "exit" exit
。这必须在每个使用变量值的IF命令中完成。
在以下行中:
if %command:~0,5%==edit/ echo %journal:%command:~5%=%;" > journal.rar
你必须知道这条线是从左到右解析的;这意味着您不能将%variable%扩展嵌套在另一个中。解决这个问题的方法是首先完成一个%normal%变量扩展,然后一个!延迟!变量扩展将采用先前的扩展值。为此,请在程序开头插入此行:
setlocal EnableDelayedExpansion
并将此行更改为上一行:
if "%command:~0,5%" == "edit/" echo !journal:%command:~5%=!;" > journal.rar
有关详细信息,请键入set /?
并仔细阅读有关“延迟展开”的部分。
答案 1 :(得分:0)
以下是一个可以接受多个单词的示例:
set "command="
set /p "command=What would you like to do? "
cls
if /i "%command%"=="have lunch" goto :food