2014-05-11 41 views
0

我是一个初学者批处理/ 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 

回答

0

你能提供你正在调用脚本的确切方式吗?

我相信问题是在线IF NOT %3 == "" (。它看起来像你试图验证第三个参数是空的。我猜你正在通过做这样的事情来调用脚本:script.bat parm1 parm2 < some_file。我认为它看到<作为第三个参数,所以它试图执行IF NOT < == ""这是无效的语法。在%3周围放置双引号应该可以修复该部分。不过,我不确定这是否能解决它将<作为参数的事实。

+0

嘿。我想要做的是,如果有第三个参数给出它显示一个错误消息,说明“太多参数”。我使用的语法如果不是%3 =空。 我打电话给Batch.bat你好 - 我是否正确地认为这应该运行? 如果我打电话给Batch.bat你好,那么错误信息应该显示? – user3122852

+0

我认为这是意图。尽管如此,'IF NOT'%3“==”“('是我测试它为空的方式。 – Pak

0

这是我看到你的脚本时看到的。使用我的答案作为调试指南,可以帮助您使脚本以您想要的方式运行。

IF NOT %3 == "" (应该IF NOT "%3" == "" (

同一部分应该goto :eof

IF EXIST %2中的exit.永远不会执行,如果它的意思是退出,不应该有一个句点。只需删除?

所有你有%file% notepad(以及类似的地方)对我来说都没有意义。他们应该是notepad %file%编辑记事本中的文件?

option2:echo > %file%.bat什么都不做,因为下面的行会再次从头开始创建文件。

相关问题