<было неожиданно в это время (пакетный скрипт)

Я начинающий сценарист bash/bash, и у меня возникли проблемы с этим кодом. Остальная часть кода работает отлично, это только первый раздел параметров, который вызывает проблемы. Любая помощь / совет будут с благодарностью приняты. Вот мой код:

@echo off

:commandline

if [%1]==[] (
    echo No data entered. Please continue as normal.
    goto :welcome 
)

IF NOT %3 == "" (  
    echo.
    echo Too many parameters given... 
    goto :welcome  
)

IF EXIST %2 (  
    xcopy %2 bak_%2
    %2 notepad
    goto :eof
    exit. 
)

:welcome

echo. 
echo **********************************
echo   Welcome to the Backup Program!!  
echo **********************************
echo. 

set /p answer=Please enter your name: 
echo. 
echo Hello %answer% please make a selection from the menu below 
echo. 

:start 

echo Option 1 - Backup and Edit
echo Option 2 - Create a Batch File
echo Option 3 - Quit
echo. 
choice /C:321


IF errorlevel 3 goto option1
IF errorlevel 2 goto option2
IF errorlevel 1 goto option3

:option1

echo. 
set /p file=Please type in the name of the file: 


if %file% == quit (
    echo.
    echo The program will now close. 
        pause
        Exit
    )

        if %file% == Quit (
            echo. 
            echo The program will now close. 
                pause
                Exit
            )

                IF NOT EXIST %file% goto :option1
                    echo.
                    copy %file% bak_%file% 
                    %file% notepad 

                        pause
                        echo. 
                        goto :start 

:option2

echo > %file%.bat
echo file=%file% > %file%.bat 
echo IF EXIST %file% ( >> %file%.bat 
echo    copy %file% bak_%file% >> %file%.bat 
echo    %file% notepad >> %file%.bat 
echo ) else ( >> %file%.bat 
echo    echo .> %file% >> %file%.bat 
echo    %file% notepad >> %file%.bat 
echo ) >> %file%.bat

goto :eof

:option3

goto :eof 

:eof

echo Thanks for using the Backup Program. 
pause 

2 ответа

Можете ли вы указать точный способ вызова сценария?

Я считаю, что проблема в линии IF NOT %3 == "" (, Похоже, вы пытаетесь проверить, что третий параметр пуст. Я предполагаю, что вы вызываете скрипт, выполняя что-то вроде этого: script.bat parm1 parm2 < some_file, Я думаю, что это видение < в качестве третьего параметра, поэтому он пытается выполнить IF NOT < == "" который является неверным синтаксисом. Положить двойные кавычки вокруг %3 должен исправить эту часть. Я не уверен, что это исправит тот факт, что это лечит < в качестве параметра, хотя.

Вот что я вижу, когда читаю твой сценарий. Используйте мой ответ в качестве руководства по отладке, которое поможет вам заставить ваш скрипт работать так, как вы этого хотели.

IF NOT %3 == "" ( должно быть IF NOT "%3" == "" (

Этот же раздел должен goto :eof?

exit. в IF EXIST %2 никогда не будет выполнено, и если это подразумевалось как выход, не должно быть точки. Просто удалить?

Все места, где у вас есть %file% notepad (и тому подобное) не имеет смысла для меня. Должны ли они быть notepad %file% редактировать файл в блокноте?

В option2: линия echo > %file%.bat ничего не делает, так как следующая строка снова создаст файл с нуля.

Другие вопросы по тегам