Shell 为什么cmd中的1行命令不起作用?

Shell 为什么cmd中的1行命令不起作用?,shell,gcc,cmd,terminal,directory,Shell,Gcc,Cmd,Terminal,Directory,如果文件夹bin不存在,我可以使用此命令自动创建该文件夹: if not exist bin mkdir bin 我有另一个命令来编译C文件并将其放入bin文件夹: gcc hello_world.c -o bin/hello_world.exe 当我像这样将命令连接在一起时: if not exist bin mkdir bin && gcc hello_world.c -o bin/hello_world.exe 如果bin文件夹不存在,它可以正常工作。但是,当bin文

如果文件夹
bin
不存在,我可以使用此命令自动创建该文件夹:

if not exist bin mkdir bin
我有另一个命令来编译C文件并将其放入
bin
文件夹:

gcc hello_world.c -o bin/hello_world.exe
当我像这样将命令连接在一起时:

if not exist bin mkdir bin && gcc hello_world.c -o bin/hello_world.exe
如果
bin
文件夹不存在,它可以正常工作。但是,当bin文件夹已经存在时 第二个命令不运行

为什么会这样,又是如何发生的

编辑:我只使用了1个
进行了尝试,但结果仍然相同

C:\WINDOWS\system32>(if not exist bin mkdir bin) & echo %errorlevel%
1

C:\WINDOWS\system32>(if not exist bin mkdir bin) & echo %errorlevel%
0
&&
表示仅当
%errorlevel%
为0时才运行下一个命令。更改为
&


请看

恐怕您的解决方案没有解决我的问题。这仍然是相同的结果。关于
&
你是对的,但是你的代码是错误的,因为它缺少
错误级别
…不需要
if
<如果文件夹已经存在,则code>mkdir
不会执行任何操作(设置错误级别除外)。使用
&
(“然后执行”)代替
&
(“如果成功,那么执行”)
Mkdir
如果文件夹已经存在,则无法创建该文件夹
mkdir-bin&gcc hello_-world.c-o-bin/hello_-world.exe应该可以正常工作。是否希望独立于
的结果执行
gcc
(如果存在)
?如果是这样,您需要像这样放置括号:
(如果不存在bin mkdir bin)&gcc hello\u world.c-o bin/hello\u world.exe
…在使用
mkdir bin 2>nul&gcc.exe hello\u world.c-o bin/hello\u world.exe时根本不需要if条件。通过将已存在的目录
bin
上的
mkdir
输出的错误消息从句柄STDERR重定向到设备NUL,从而抑制该错误消息。下一步
gcc.exe
在创建子目录
bin
成功或失败时独立执行。如果要使用If条件,我建议使用
mkdir bin 2>nul&If exist bin gcc.exe hello_world.c-o bin/hello_world.exe
,它首先创建目录,然后检查目录是否存在,在这种情况下运行
gcc.exe
。多亏@Mofi,我修复了这个问题!