执行批处理文件时命令无法识别错误消息的原因是什么?

时间:2015-11-10 13:04:35

标签: batch-file cmd

我写了这批代码:

@echo on
set variable=z
set t=%time:~0,2%
IF %t% LSS 12 (
        %z%=_1
    ) ELSE (
        %z%=_2
)

当从命令窗口运行批处理文件时,我收到此错误:

  

IF 14 LSS 12(_1)ELSE(_2)
  '_2'不被识别为内部或外部命令,可操作程序或批处理文件。

我的代码中的错误在哪里导致此错误消息?

1 个答案:

答案 0 :(得分:0)

我不确定你想要达到什么目标。我想你要检查条件%t%<12并将变量z设置为_1(如果是这种情况),否则设置为_2。

您的错误是%z%=_1不是valide声明。要为变量赋值,您必须始终使用SET

SET z=_1将导致%z%保持值_1。所以你的代码可以修改如下:

@echo on
set variable=z
set t=%time:~0,2%
IF %t% LSS 12 (
        SET z=_1
    ) ELSE (
        SET z=_2
)

根据您的其余代码,您可能还需要在代码的开头添加行SETLOCAL EnableDelayedExpansion,并将您的变量z作为!z!访问,而不是在您的IF下方%z% -construct。

编辑:

为了使你的评论适合你的评论,你应该这样做:

@echo on
set t=%time:~0,2%
IF %t% LSS 12 (
        SET z=_1
    ) ELSE (
        SET z=_2
)
set folderName=%date%%z%
mkdir %folderName%

更简单的方法是在IF-counstruct中设置folderName

@echo on
setlocal enabledelayedexpansion
set t=%time:~0,2%
IF %t% LSS 12 (
        set folderName=%date%_1
    ) ELSE (
        set folderName=%date%_2
)

mkdir !folderName!