批处理if / else语句

时间:2019-03-15 16:40:17

标签: batch-file if-statement

我目前正在编写一个批处理文件,以创建,编辑和删除我当前正在从事的实习工作的日记帐分录,我似乎不明白如何使if / else语句正常工作,这就是我的第一次使用批处理时,我所做的大多数编码都是在Linux或Python中进行的,所以也许我只是在犯一个愚蠢的错误:

:edit
echo Welcome to the editing menu!
echo To edit a journal entry, enter the date of the journal below in a MM-DD-YYYY format! (I.E. 05-8-1982)
powershell sleep 3
set /p filename2=What is the date of the entry you are looking for?
echo Searching for file now... 
powershell sleep 1
if EXIST "%filename2%.txt" G:\Batch\JournalEntries\*
(
start "%filename2%.txt"
)
ELSE (
ECHO not found

从这一点来看,当我运行程序并进入编辑菜单时,要求我输入文件名。我将其放入,然后打开一个新的cmd窗口,其中包含我输入的文件名,因为它找不到我输入的名称(此操作是有目的的,我正在测试是否会给我else错误)

1 个答案:

答案 0 :(得分:1)

您的固定代码必须类似于:

:edit
echo Welcome to the editing menu!
echo To edit a journal entry, enter the date of the journal below in a MM-DD-YYYY format! (I.E. 05-8-1982)
timeout /T 3 >nul
set /p "filename2=What is the date of the entry you are looking for? "
echo Searching for file now... 
timeout /T 1 >nul
if exist "%filename2%.txt" (
    if exist "G:\Batch\JournalEntries\*" (
        start "" "%filename2%.txt"
    ) else (
        echo Did not found files matching pattern G:\Batch\JournalEntries\*!
    )
) else (
    echo Did not found files matching pattern %filename2%.txt!
)
pause

一些注意事项:

  • 有一个timeout批处理命令:用于等待指定的时间。备选:ping
  • 设置诸如var之类的变量时,引用valueset "var=value"。即使有/a/p选项,也要使用相同的格式。
  • 您似乎误解了if命令的用法。至少一个括号应与if位于同一行;有关更多详细信息,请参见上面的代码块。
  • 最好不要大写书写。它是不区分大小写的语言,因此只会发出声音。
  • 似乎您在引用%filename2%.txt文件时同时引用文件名,文件名和扩展名时出错。由于不允许使用引号作为文件/文件夹名,因此我删除了文件名和扩展名,只用了双引号。

有关使用的命令的更多信息,请输入cmd.exe

  • echo /?
  • timeout /? 解释其用法
  • ping /?替代timeout
  • if /? 解释if
  • 的语法和用法
  • start /?