Пакетные операторы if / else - PullRequest
1 голос
/ 15 марта 2019

В настоящее время я пишу командный файл для создания, редактирования и удаления записей журнала для стажировки, над которой я сейчас работаю. Кажется, я не понимаю, как заставить работать мои операторы if / else, это мое В первый раз, используя пакетную программу, большая часть написанного мной кода была либо в Linux, либо в Python, так что, возможно, я просто делаю глупую ошибку:

:edit
echo Welcome to the editing menu!
echo To edit a journal entry, enter the date of the journal below in a MM-DD-YYYY format! (I.E. 05-8-1982)
powershell sleep 3
set /p filename2=What is the date of the entry you are looking for?
echo Searching for file now... 
powershell sleep 1
if EXIST "%filename2%.txt" G:\Batch\JournalEntries\*
(
start "%filename2%.txt"
)
ELSE (
ECHO not found

С этого момента, когда я запускаю программу и попадаю в меню редактирования, меня просят ввести имя файла. Я вставил его, и затем открылось новое окно cmd с именем файла, которое я ввел, так как он не может найти имя, которое я ввел (это сделано специально, я проверяю, выдаст ли это мне ошибку else или нет) .

1 Ответ

1 голос
/ 15 марта 2019

Ваш фиксированный код должен выглядеть следующим образом:

:edit
echo Welcome to the editing menu!
echo To edit a journal entry, enter the date of the journal below in a MM-DD-YYYY format! (I.E. 05-8-1982)
timeout /T 3 >nul
set /p "filename2=What is the date of the entry you are looking for? "
echo Searching for file now... 
timeout /T 1 >nul
if exist "%filename2%.txt" (
    if exist "G:\Batch\JournalEntries\*" (
        start "" "%filename2%.txt"
    ) else (
        echo Did not found files matching pattern G:\Batch\JournalEntries\*!
    )
) else (
    echo Did not found files matching pattern %filename2%.txt!
)
pause

Только некоторые примечания:

  • В пакете есть команда timeout: она используется для ожидания указанногопериод.Альтернатива: ping.
  • Цитировать var и value при установке таких переменных, как set "var=value".Используйте тот же формат, даже если есть опции /a или /p.
  • Вы, похоже, неправильно понимаете использование команды if.Как минимум одна скобка должна быть в той же строке, что и if;см. приведенный выше блок кода для получения более подробной информации.
  • Хорошо не писать прописными буквами в пакетном режиме.Он просто шумит, поскольку не учитывает регистр языков.
  • Кажется, вы допустили ошибку, указав %filename2%.txt файл, в котором указаны как имя файла, так и имя файла и расширение.Поскольку кавычки не допускаются как файл / имя_фолдера, я удалил и просто дважды заключил в кавычки имя файла и расширение.

Для получения дополнительной информации об используемых командах введите cmd.exe:

  • echo /?
  • timeout /? объясняет его использование
  • ping /? альтернатива timeout
  • if /? объясняет синтаксис и использование if
  • start /?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...