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

すみません。あなたの質問は明確ではありません。「.exeの終了が続く」(どの.exeが閉じているのですか?)など、いくつかの紛らわしい点があり、あなたの質問は.rarファイルや「複数単語の保存」には関係ありません。弦」。ただし、次の点が見られます。

変数値がこのようにパーセント記号で展開される場合:変数が最初に展開され、次に結果の行が解析さ%command%れることに注意する必要があります。これは、変数の値によって行にエラーが発生する可能性があることを意味します。たとえば、次の行では、コマンド変数の値が の場合、解析される行は次のとおりです。もちろん、エラーが発生します。(詳細については入力してください)。if %command%==exit exitadd/one two threeif add/one two three==exit exitif /?

この問題を回避するには、変数と比較値の両方を引用符で囲みます。このように、値にスペースを含む複数の単語がある場合、値全体が比較目的で 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 に答える