Batch file 批处理文件如果else总是执行else,那么使用do时的正确语法是什么
我正在检查网络驱动器是否存在,如果它存在,我会通过文本文件复制到它,否则我会回显它不存在 我的问题是它每次都执行if,但也总是执行else 我仔细检查了匹配的括号并搜索了语法,我想知道它是否与Batch file 批处理文件如果else总是执行else,那么使用do时的正确语法是什么,batch-file,Batch File,我正在检查网络驱动器是否存在,如果它存在,我会通过文本文件复制到它,否则我会回显它不存在 我的问题是它每次都执行if,但也总是执行else 我仔细检查了匹配的括号并搜索了语法,我想知道它是否与do 请参阅下面的代码 @echo off set LOGFILE=inv.filie.log call :LOG >> %LOGFILE% exit /B :LOG E: echo. echo *** Date: %DATE:/=-% Time:%TIME::=-% *** echo.
do
请参阅下面的代码
@echo off
set LOGFILE=inv.filie.log
call :LOG >> %LOGFILE%
exit /B
:LOG
E:
echo.
echo *** Date: %DATE:/=-% Time:%TIME::=-% ***
echo.
CD "E:\Ftp\Clients\OUT_TEST\INV\"
echo.
echo.
echo Moving Files to Test:
For %%G in (*.txt) do (
if exist z:\ (
COPY /Y "%%G" "Z:\Outgoing\"
MOVE /Y "%%G" "E:\Ftp\Clients\OUT_TEST\INV\Archive\"
)
else (
echo Direcotry Z:\ for test is offline
)
)
echo.
echo.
echo *** Task complete ***
inv.file.log的输出为
*** Date: 2018-05-25 Time: 8-11-53.89 ***
Moving Files to Test AS2:
1 file(s) copied.
1 file(s) moved.
Direcotry Z:\ for test is offline
*** Task complete ***
从上面可以看出,它总是回显行Direcotry Z:\for test is offline
如果有任何帮助,我们将不胜感激。这是无效的语法,括号和
else
必须在同一行
以下脚本:
@echo off
if exist c:\ (
echo if true
)
else (
echo if false
)
将产生:
if true
'else' is not recognized as an internal or external command,
operable program or batch file.
if false
因为它将第一个右括号视为if
语句的结尾
我不确定您为什么没有看到错误,除非您使用2>nul:
调用脚本-这将丢弃错误,您只需看到:
if true
if false
在任何情况下,正确的方法是正确格式化
if
语句。在您的情况下,这将是:
for %%g in (*.txt) do (
if exist z:\ (
copy /y "%%g" "z:\outgoing\"
move /y "%%g" "e:\ftp\clients\out_test\inv\archive\"
) else (
echo Directory z:\ for test is offline.
)
)
您也可以通过不检查每个文件是否存在z:
来改进它。您可能会发现这样做效果更好:
if not exist z:\ (
echo Directory z:\ for test is offline.
) else (
copy /y *.txt "z:\outgoing\"
move /y *.txt "e:\ftp\clients\out_test\inv\archive\"
)
请注意,我并不是说它更好,因为您可以访问比我更多的上下文。这是您应该根据完整的图片做出的决定。这是无效的语法,括号和
否则
必须在同一行
以下脚本:
@echo off
if exist c:\ (
echo if true
)
else (
echo if false
)
将产生:
if true
'else' is not recognized as an internal or external command,
operable program or batch file.
if false
因为它将第一个右括号视为if
语句的结尾
我不确定您为什么没有看到错误,除非您使用2>nul:
调用脚本-这将丢弃错误,您只需看到:
if true
if false
在任何情况下,正确的方法是正确格式化
if
语句。在您的情况下,这将是:
for %%g in (*.txt) do (
if exist z:\ (
copy /y "%%g" "z:\outgoing\"
move /y "%%g" "e:\ftp\clients\out_test\inv\archive\"
) else (
echo Directory z:\ for test is offline.
)
)
您也可以通过不检查每个文件是否存在z:
来改进它。您可能会发现这样做效果更好:
if not exist z:\ (
echo Directory z:\ for test is offline.
) else (
copy /y *.txt "z:\outgoing\"
move /y *.txt "e:\ftp\clients\out_test\inv\archive\"
)
请注意,我并不是说它比我更好,因为你比我能接触到更多的上下文。这是一个你应该根据完整的情况做出的决定。@GOTO0:你想得对<代码>)其他(要求在一条物理线上。可能重复的目标(太宽)(在注释中回答)@GOTO0:你想得对。
)其他(
要求在一条物理线上。可能重复的目标(太宽)(在注释中回答)