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,我修复了这个问题!