Batch file 该命令的语法不正确

Batch file 该命令的语法不正确,batch-file,Batch File,我有以下代码: set originalDiractory = %1 set tableauReposetory = %2 set imageName = %3 set isFemale = %4 IF %isFemale% ==1( copy /y "%originalDiractory%\User_Gender_Files\Female.png" "%tableauReposetory%\%imageName%.png" ) IF %isFemale% ==0( copy /y "%or

我有以下代码:

set originalDiractory = %1
set tableauReposetory = %2
set imageName = %3
set isFemale = %4

IF %isFemale% ==1(
copy /y "%originalDiractory%\User_Gender_Files\Female.png"  "%tableauReposetory%\%imageName%.png"
)
IF %isFemale% ==0(
copy /y "%originalDiractory%\User_Gender_Files\Male.png"  "%tableauReposetory%\%imageName%.png"
)
当我从
CMD
运行它时,我得到以下错误:

C:\<path>>set isFemale = "0"
The syntax of the command is incorrect.
C:\<path>>IF 0 ==1(
C:\>set isFemale=“0”
该命令的语法不正确。
C:\>如果0==1(
我错过了什么?怎么了


我在源代码和目标代码周围添加了撇号,但仍然不起作用

您可以像这样调整所提供代码的结构:

@Echo关闭
如果“%$4”NEq“1”(如果“%$4”NEq“0”(退出/B),则设置“srcImg=M”
)否则设置“srcImg=Fem”
复制/Y“%1\User\u Gender\u Files\%srcImg%ale.png”“%2\%3.png”2>Nul

此代码与您的代码一样,假定输入参数符合正在运行的
Copy
命令的要求

在值和参数之间放置一个空格(
如果%var%==1(
)啊,我真不敢相信我竟然想到了这一点,感谢工作似乎也避免了在定义变量时使用空格,
set-imageName=%3
set-imageName=%3
不同,因为第一个变量创建了一个变量
imageName
(尾随空格)使用带前导空格的第三个参数的内容。最佳做法是将
var name
var content
都用引号括起来
set“imageName=%3”
。此外,如果参数带有引号,您可以去掉它们(如果需要)使用
%~3
所显示的代码无法生成所显示的输出。如果我错了,请纠正我,但我认为在使用
set
时,您需要接近等号的值。这可能会起作用
set isFemale=%4
以及其他值