Batch file 将多字字符串存储到文件中

Batch file 将多字字符串存储到文件中,batch-file,Batch File,我最近一直在尝试制作一个程序,将文本存储到一个文件中供以后查看,并将其存储为.rar文件,以防那些不了解如何从.rar文件中提取文本的人(即“技术”较低的人)受到攻击 但是,我在程序中遇到了一个错误,导致此时不希望出现,然后在我输入add/…时.exe关闭(即,任何在单词之间带有空格的多单词字符串[add/,但是,它们确实正常工作) 在将多字字符串存储到.rar或一般文件中时,是否必须遵循特殊规则(但是,我知道有创建/重命名文件夹/目录的规则) 节目部分: :command cls set

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

但是,我在程序中遇到了一个错误,导致此时不希望出现
,然后在我输入
add/…
时.exe关闭(即,任何在单词之间带有空格的多单词字符串[
add/
,但是,它们确实正常工作)

在将多字字符串存储到.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
:命令
cls
设置/p日记帐=日记帐.rar
如果%command:~0,4%==添加/回显“%journal%”命令:~4%;“>journal.rar
如果%command:~0,5%==编辑/回显%journal:%command:~5%=%;“>journal.rar
转到命令

对不起,您的问题不清楚。其中有几个令人困惑的地方,比如“后面跟着.exe关闭”(哪个.exe正在关闭?),以及您的问题与.rar文件没有任何关系,也与“存储多字字符串”没有任何关系。但是,我可以从中看到以下几点:

当变量值以百分比符号展开时,如下所示:
%command%
必须注意首先展开变量,然后解析生成的行。这意味着变量值可能会在行中引入错误。例如,在此行中:
如果%command%==exit
,如果命令变量的值可编辑的是
add/一两个三
,然后解析的行是:
if add/一两个三==exit exit
,当然,这会发出一个错误!(键入
if/?
了解更多详细信息)

避免此问题的方法是将变量和比较值都用引号括起来;这样,如果该值有多个带空格的单词,则整个值在if命令中分组以进行比较:
如果“%command%”==“exit”exit
。必须在使用变量值的每个if命令中执行此操作

在以下行中:

if %command:~0,5%==edit/ echo %journal:%command:~5%=%;" > journal.rar
您必须知道,该行是从左到右解析的;这意味着您不能在另一行中嵌套%variable%展开。解决此问题的方法是首先完成%normal%variable展开,然后执行!delayed!variable展开,该展开将采用上一个展开值。为此,请在开始处插入此行您的程序:

setlocal EnableDelayedExpansion
并将前一行更改为这一行:

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

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

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

set "command="
set /p "command=What would you like to do? "
cls
if /i "%command%"=="have lunch" goto :food

鉴于我提到的唯一窗口是CMD.exe,它正在运行我的批处理程序,我相信提到的.exe是清楚的。我使用.rar文件来存储数据;该程序与.rar没有任何关系,我从来没有说过它是;将来不要假设作者的意思是没有说过的。还有,尽管我已经知道关于延迟扩张,我给了你大量的信息,提及(演讲)是无关紧要的,尽管它会帮助那些还不知道的人,尽管这个问题与它无关。最后,你没有回答我唯一的问题。。。