获取错误“文件名,目录名称或卷标语法不正确。”从批处理脚本

问题描述:

我有一个批处理脚本有条件地设置基于另一个变量的变量:从包含直列if语句行获取错误“文件名,目录名称或卷标语法不正确。”从批处理脚本

The filename, directory name, or volume label syntax is incorrect.

set LABEL_NAME=main 
echo %LABEL_NAME% 
set UPLOAD_CHANNELS= 

/E:ON /V:ON if not defined %BINSTAR_TOKEN% set UPLOAD_CHANNELS=--upload-channels scitools/label/!LABEL_NAME! 

echo %UPLOAD_CHANNELS% 

我得到的错误。

请注意,首先将变量UPLOAD_CHANNELS定义为等于单个空格字符。

+0

'/ E:on/V:on'是命令行开关。改为使用'setlocal enableextensions enabledelayedexpansion'。把它放在一行。猜测'UPLOAD_CHANNELS'稍后会被使用,并且由于它包含空格,所以你最好'set'UPLOAD_CHANNELS = bla bla bla''用'setlocal ...'和'/ E:ON/V:ON来设置' – elzooilogico

+0

'删除我得到错误''UPLOAD_CHANNELS'不被识别为内部或外部命令,可操作程序或批处理文件。使用双引号将'UPLOAD_CHANNELS = ...'包围'使系统找不到指定的路径。'... – DPeterK

+0

您在'/ E:ON/V:ON ...'前面缺少'cmd'。 .. – aschipfl

你的代码看起来像这样吗?

@echo off 

setlocal enableextensions enabledelayedexpansion 

set "LABEL_NAME=main" 
echo %LABEL_NAME% 
set "UPLOAD_CHANNELS= " 

if not defined BINSTAR_TOKEN set "UPLOAD_CHANNELS=--upload-channels scitools/label/!LABEL_NAME!" 

echo %UPLOAD_CHANNELS% 

注意使用defined关键词查询的变量名不是它的内容,因此无需%

我猜你的代码做更多的东西,在这一点上是没有必要延迟扩展

+0

这样做的工作!感谢您的帮助@elzooilogico – DPeterK