Smk*_*rrl 9 windows cmd if-statement batch-file
我有一个批处理文件,需要将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
Run Code Online (Sandbox Code Playgroud)
这是我的第一个计算机课程,任何帮助将不胜感激.谢谢.
Nat*_*ara 12
此代码存在一些问题.首先,批处理文件需要特定的语法及其IF/ ELSEstatements.
像这样的东西
IF EXIST "%1" (
echo "it's here!"
) ELSE (
echo "it isn't here!"
)
Run Code Online (Sandbox Code Playgroud)
工作正常,而这样的事情
IF EXIST "%1"
(
echo "it's here!"
)
ELSE
(
echo "it isn't here!"
)
Run Code Online (Sandbox Code Playgroud)
才不是.括号分隔块,因此您的IF命令将执行其间的所有内容(,)如果它的计算结果为true.
其次,你实际上并不需要任何ELSE陈述.因为您在GOTO命令之前使用命令ELSE,所以GOTO如果第一个命令的IF计算结果为true ,则永远不会到达第二个命令.
最后,使用您当前显示的: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
Run Code Online (Sandbox Code Playgroud)
小智 2
我不太熟悉 Batch,但看起来您的 If 语句格式错误。
IF EXIST "%1" (
GOTO COMMAND
) ELSE
(
GOTO ERROR1
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58053 次 |
| 最近记录: |