0

我最近一直在尝试制作一个程序来简单地将文本存储到文件中以供以后查看,将其存储为 .rar 文件以防止那些不了解如何从 .rar 中提取文本的人(即少“技术”的人)...

然而,我在程序中遇到了一个错误,导致<word> not expected at this time我输入时 .exe 关闭add/<word> <word>...(即任何在单词 [ 之间有空格的多字字符串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
4

2 回答 2

0

这是一个可以接受多个单词的示例:

set "command="
set /p "command=What would you like to do? "
cls
if /i "%command%"=="have lunch" goto :food
于 2013-05-24T05:27:08.560 回答
0

打扰一下。你的问题不清楚。其中有几个令人困惑的地方,例如“随后是 .exe 关闭”(哪个 .exe 正在关闭?),以及您的问题与 .rar 文件没有任何关系,也与“存储多字弦”。但是,我可以在其中看到以下几点:

当以这种方式使用百分号扩展变量值时:%command%您必须知道首先扩展变量,然后解析结果行。这意味着变量的值可能会在行中引入错误。例如,在这行:if %command%==exit exit中,如果 command 变量的值为add/one two three,那么被解析的行就是 this: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% 变量展开,然后一个 !delayed! 将采用先前扩展值的变量扩展。为此,请在程序开头插入这一行:

setlocal EnableDelayedExpansion

并用这一行更改上一行:

if "%command:~0,5%" == "edit/" echo !journal:%command:~5%=!;" > journal.rar

有关详细信息,请键入set /?并仔细阅读有关“延迟扩展”的部分。

于 2013-05-24T03:59:46.663 回答