windows - 批处理文件。如果语句?

标签 windows batch-file if-statement cmd

我有一个批处理文件,需要将 attrib +h 命令应用于一个文件,然后输出到一个 txt 文件并在屏幕上显示内容。如果没有提供文件或找不到文件,也应该这样做。到目前为止我有这个但无法让它工作:


:TOP
IF EXIST "%1" GOTO COMMAND
) ELSE
(
GOTO ERROR1

:COMMAND
attrib +h %1
SHIFT
GOTO TOP
GOTO END

:ERROR1
IF "%1"=="" GOTO ERROR2
) ELSE
(
GOTO ERROR3

:ERROR2
ECHO.
ECHO No file(s) provided. Please re run the batch file.
GOTO END

:ERROR3
ECHO.
ECHO The file was not found. Please re run the batch file.
GOTO END

:END

这是我的第一门计算机类(class),如有任何帮助,我们将不胜感激。谢谢。

最佳答案

此代码存在一些问题。首先,批处理文件的 IF/ELSE 语句需要特定的语法。

像这样

IF EXIST "%1" (
    echo "it's here!"
) ELSE (
    echo "it isn't here!"
)

工作正常,而像这样的东西

IF EXIST "%1" 
(
    echo "it's here!"
) 

ELSE 
(
    echo "it isn't here!"
)

没有。括号分隔 block ,因此如果计算结果为真,您的 IF 命令将执行 () 之间的所有内容。

其次,您实际上不需要任何ELSE 语句。因为您在 ELSE 命令之前使用了 GOTO 命令,所以如果第一个 IF 计算结果为真。

最后,对于您当前显示的代码,您拥有的 :TOP 标签是不必要的。

完成所有这些之后,您应该得到如下所示的内容:

@ECHO off
IF EXIST "%1" (
    GOTO COMMAND
)
GOTO ERROR1

:COMMAND
    echo "You entered a file correctly, and it exists!"
    GOTO END

:ERROR1
    IF "%1"=="" (
        GOTO ERROR2
    )
    GOTO ERROR3

:ERROR2
    ECHO.
    ECHO No file(s) provided. Please re run the batch file.
    GOTO END

:ERROR3
    ECHO.
    ECHO The file was not found. Please re run the batch file.
    GOTO END

:END

关于windows - 批处理文件。如果语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22334327/

相关文章:

spring-boot - if-unless 在 thymeleaf 引擎中给出相同的返回

windows - 批处理脚本循环

python - Python 中的元组减法语句

windows - 如何在 Windows 上从 Powershell 打开文件夹(在我的桌面上)?

batch-file - 从命令行停止然后启动 EC2

batch-file - 显示 Windows 命令提示符输出并将其重定向到文件

windows - Windows 启动时在后台运行批处理文件

Excel VBA(非常慢)如果满足条件则将整行移动到底部

windows - 检查 ReadDirectoryChangesw 是否适用于给定路径

c++ - 使用 GetProcessTimes 和 FileTimeToSystemTime 的 CPU 处理时间在 64 位 win 中不起作用