2017-06-15 55 views
0

!每次我運行它它總是這樣說。這就是它說的:批處理文件:該命令的語法是我的批處理文件有問題不正確

the syntax of the command is incorrect. 

而這就是其餘的代碼。我試圖做我自己的代碼。就像打開記事本一樣,除了沒有圖形干擾。你們能幫我嗎?

set /p ans= New files or saved file! n or a : 

if [%ans%] = [n] (
    set /p mkfl= Files you want to save in! [filename].[bat;cmd;txt] : 
    set /p val= Enter Key to Save!: 
    echo %val% > %mkfl% 
    SET /p t= y: 
) else if [%ans%] equ [a] (
    set /p flnm= Type in the filename!: 
    set /p val= Type in words! 
    set /p ans= Enter [s,o] to re-save or overwrite!: 

    if [%ans%] equ [s] (
     ECHO append 
    ) else if [%ans%] equ [o] (
     ECHO overwrite 
    ) else (
     ECHO problem! 
    ) 

    SET /p z= f: 
) else (
    ECHO problem occurred during executing! 
    SET /p a= p: 
) 

set /p fk= . 
+0

請閱讀'IF'命令的幫助。通過在命令提示符下鍵入批處理文件名打開一個命令提示符,然後再運行批處理文件下一次故障排除。 – Squashman

+0

sry,我是新來的CMD。 – Andrew

+0

非常感謝#Squashman!這幫了我很多! – Andrew

回答

1

你的問題出在下面的語句

echo %val% > %mkfl% 

爲了解決這個問題,你需要search SO(使用該設施在頂欄)爲delayed expansion

本質上,由於在達到if語句時未定義mkfl,因此語句評估爲echo >,這是無效語法。討論delayed expansion的項目應說明如何克服這一點。

+0

所提到的聲明甚至評估爲'echo>' – JosefZ

+0

@JosefZ:應用了更正。好點子! – Magoo

0

有代碼中的一些錯誤(例如,使用= EQU或代替==在IF語句)。下面是修改後的版本至少運行......雖然它可能不是你想要它做什麼,它可能讓你開始。

@echo off 
setlocal enabledelayedexpansion 
set /p ans= New files or saved file n or a : 
if [%ans%] == [n] (
    set /p mkfl= Files you want to save in [filename].[bat;cmd;txt] : 
    set /p val= Enter Key to Save: 
    echo %val% > !mkfl! 
    SET /p t= y: 
) else if [%ans%] == [a] (
    set /p flnm= Type in the filename: 
    set /p val= Type in words: 
    set /p ans= Enter [s,o] to re-save or overwrite: 
    if [%ans%] == [s] (
    ECHO append 
) else if [%ans%] equ [o] (
    ECHO overwrite 
) else (
    ECHO problem 
) 
    SET /p z= f: 
) else (
    ECHO problem occurred during executing 
    SET /p a= p: 
) 
set /p fk= . 
0

我想了解你的意圖的情況有點困難,但已採取了最好的猜測在未經測試的重寫以下:

SETLOCAL ENABLEDELAYEDEXPANSION 
SET/P "ansone= New files or saved file! n or a: " 
IF /I "%ansone%"=="n" (
    SET/P "mkfl= Files you want to save in! [filename].[bat;cmd;txt]: " 
    SET/P "valone= Enter Key to Save!: " 
    >"!mkfl!" ECHO !valone! 
    SET/P "t= y: " 
) ELSE (
    IF /I "%ansone%"=="a" (
     SET/P "flnm= Type in the filename!: " 
     SET/P "valone= Type in words! " 
     SET/P "anstwo= Enter [s,o] to re-save or overwrite!: " 
     IF /I "!anstwo!"=="s" (
      ECHO append 
     ) ELSE (
      IF /I "!anstwo!"=="o" (
       ECHO overwrite 
      ) ELSE (
       ECHO problem! 
      ) 
     ) 
     SET/P "z= f: " 
    ) ELSE (
     ECHO problem occurred during executing! 
     SET/P "a= p: " 
    ) 
) 
SET/P "fk= . " 

我假設你一個人知道這個提示的意圖設置爲%t%,%z%,%a% & %fk%因此,根據您的原始腳本將它們留下。