2015-10-12 2 views
-1

Я закодировал командный файл, который может выполнять несколько действий. Команды вводятся в главном меню и отформатированы, как это:Изменить выход для% cho%

echo Enter a command here: 
:menucmd 
set/p "cho=>" 
if %cho%==latest goto 1.0.0 

Каждый раз, когда я обновить файл Я держу журнал обновлений в пакетном файле. После просмотра журнала, пользователь попадает в меню, как это:

:loghome 
    cls 
    title Home 
    echo Welcome back. What's next? 
    echo You just viewed the (Filename) %cho% update log. 
    echo Stuck? Type "help" for a list of things you can say. 
    goto menucmd 

код, который говорит:

echo You just viewed the (Filename) %cho% update log. 

отображается предыдущая команда вводится с помощью% чо% от основного меню, которое, в данном случае, это название журнала ранее просмотренным, если пользователь не доступен последний журнал с помощью команды под названием «последний», в этом случае, текст говорит:

echo You just viewed the (Filename) latest update log. 

Я хотел бы быть в состоянии вставить так мне код в журнал обновлений, который изменяет выход% чо% дает, так что текст говорит:

echo You just viewed the (Filename) 1.0.0 update log. 

даже если это не то, что пользователь действительно напечатал. Я спрашиваю, как изменить вывод «% cho%» без ввода пользователем другой команды? Спасибо.

+1

50% вопросов плохо отформатированы в оставшихся 50%, они хорошо отформатированы, но плохо сформулированы. Это ваше дело. Я не понял этот сценарий. Пожалуйста, напишите текущее состояние дел и что должно быть изменено на всех его этапах. – Paul

+1

Если я прочитал между строками, я понимаю, что вы хотите, чтобы «последний» стал «1.0.0». Может быть, что-то вроде этого: 'if '% cho%" == "latest" set "cho = 1.0. 0 "& goto где-то" – Paul

ответ

0

Переменная% cho% Variable может использоваться в коде, который необходимо заменить другим именем. У меня не было представления о метке: 1.0.0 и внес изменения для безопасного выхода для экранирования циклов Titel.

@echo off 
setlocal enabledelayedexpansion 
set /p "cho=>" 
for /f "tokens=*" %%a in ("%cho%") do set Variable=%%a 
call :1.0.0 
goto :eof 

:1.0.0 
for /f "tokens=* delims=:" %%a in ("!Variable:%cho%=%0!") do (
call :logman %%a) 
goto :eof 

:logman 
echo Welcome back. What's next? 
echo You just viewed the (Filename) %1 update log 
pause :: > nul 

delims вариант с ограничителем для цикла: в этикетке Titel: 1.0.0 заменяет: символ двойной точки из% чо изменения% Выход в% 0. Параметр% 0 показывает имя метки.

Для изменения времени выполнения setlocal enabledelayedexpansion для каждого! включен.

Добавить комментарий макет :: в последней строке можно заменить.

Смежные вопросы