Я написал командный файл, который получает данные от пользователя для открытия файла, а затем отображает меню. Затем от пользователя поступает запрос ввода с использованием файла .exe C, который я написал, и возвращает число, введенное пользователем, или «-1», если ввод не был числом. Независимо от того, какую опцию я использую, программа всегда открывает блокнот независимо от опции меню. Любая помощь будет отличной. Я включил код для командного файла и мой входной файл c.
Я проверил свою программу на C, и она, похоже, возвращает то, что должна, поэтому может возникнуть проблема с форматированием на стороне пакета. Я включил только для справки.
ФАЙЛ:
REM 1. Clear the screen
REM ------------------------------------------------------
cls
REM 2. Getting user input
REM ------------------------------------------------------
SET /p "FileToProcess=Please enter file(s) to process:"
REM 3. Checking for file
REM ------------------------------------------------------
IF EXIST "%FileToProcess%" (
cls
:MENU
ECHO 1. Open in Notepad
ECHO 2. Open in Word
ECHO 3. Open in Notepad ++
ECHO 4. Print
myChoice.exe
)
IF ERRORLEVEL 1 (
cd C:\Windows
notepad.exe %FileToProcess%
GOTO END
)
IF ERRORLEVEL 2 (
cd C:\Program Files (x86)\Microsoft Office\root\Office16
WINWORD.EXE %FileToProcess%
GOTO END
)
IF ERRORLEVEL 3 (
cd C:\Program Files\Notepad++
notepad++.exe %FileToProcess%
GOTO END
)
IF ERRORLEVEL 4 (
cd C:\Windows
notepad.exe /P %FileToProcess%
GOTO END
)
IF ERRORLEVEL -1 (
ECHO Sorry your input was not accepted!
pause
GOTO MENU
)
REM 4. Display error if no file found
REM -----------------------------------------------------
) ELSE (
ECHO File does not exist!
GOTO END
)
:END
C КОД ПРОГРАММЫ ВВОДА:
#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)
// main
int main(void)
{
// variables
int num;
char userInput[10] = "";
// requesting input
printf("Please enter a menu option: ");
fgets(userInput, 81, stdin);
// checks input
if (sscanf(userInput, "%d", &num) == 1)
{
return num;
}
else
{
return -1;
}
return 0;
}