批处理脚本执行FOR /F命令时出现"> was unexpected at this time."错误的原因
解析批处理脚本中"> was unexpected at this time."错误的原因及解决办法
这个错误的核心问题出在FOR /F语句中重定向符号的解析逻辑以及可能的变量取值格式问题,下面具体拆解:
1. 重定向符号被错误解析
在你的命令里,FTP -s:%FTPFIL% > log.txt中的>是用来把FTP命令的输出写入log.txt,但批处理在解析FOR /F的in('...')部分时,会优先把>识别为FOR命令自身的输出重定向,而不是传递给内部的FTP命令执行,这就导致了语法解析混乱,抛出"> was unexpected at this time."的错误。
批处理中,特殊符号(如>、<、|)在嵌套的命令上下文里需要用转义符^来标记,告诉解析器这个符号属于内部命令的一部分,而非外部命令的语法。
2. 变量FTPFIL可能包含特殊字符或空格
如果%FTPFIL%对应的文件名或路径包含空格、&、()这类特殊字符,且没有用双引号包裹的话,FTP命令的参数会被拆分,导致整个in('...')里的命令语法失效,间接触发同样的错误提示。
修正后的命令示例
结合以上两点,你可以把命令修改为:
FOR /F "TOKENS=1 DELIMS=" %%I in ('FTP -s:"%FTPFIL%" ^> log.txt') DO SET /A FTPNUM=%%I
这里做了两处关键调整:
- 用
^>转义重定向符号,确保它被传递给FTP命令执行输出写入操作 - 给
-s:%FTPFIL%加上双引号-s:"%FTPFIL%",兼容路径含空格或特殊字符的情况
内容的提问来源于stack exchange,提问作者funyao
相关产品推荐
相关产品推荐

