2014-05-11 39 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什麼都不做,因爲下面的行會再次從頭開始創建文件。

相關問題