我有一个批处理文件,需要将 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/