2013-05-23 5 views
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 

ответ

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%, а затем a! Delayed! переменное расширение, которое примет предыдущее расширенное значение. Чтобы сделать это, вставьте эту строку в начале программы:

setlocal EnableDelayedExpansion 

и изменить предыдущую строку этим одним:

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

Для получения более подробной информации, типа set /? и внимательно прочитайте разделы о «замедленном расширении ».

+0

Видя, как единственное окно я уже был CMD.exe и что он работает мой пакетную программу, я считаю, что .exe упомянуто было ясно. Я использую .rar файлы для хранения данных; программа никак не связана с .rar, и я никогда не говорил, что это так; в будущем не предполагайте, что автор имел в виду то, что не было сказано.Кроме того, хотя я уже знал о задержке расширения, с объемом информации, которую я вам дал, упоминание (лекция) было неактуальным, хотя это помогло бы людям, которые еще не знают, хотя вопрос не был связан с ним. Наконец, вы не смогли ответить на мой единственный вопрос ... –

0

Вот пример, который может принимать несколько слов:

set "command=" 
set /p "command=What would you like to do? " 
cls 
if /i "%command%"=="have lunch" goto :food 
Смежные вопросы