【发布时间】:2021-03-05 03:18:39
【问题描述】:
如果文件夹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 个&,但结果还是一样。
【问题讨论】:
-
不需要
if。如果文件夹已经存在,mkdir将不会执行任何操作(设置错误级别除外)。使用&(“然后做”)而不是&&(“如果成功,那么做”)。Mkdir“失败”创建该文件夹,如果它已经存在。mkdir bin & gcc hello_world.c -o bin/hello_world.exe应该适合你。 -
您希望
gcc的执行独立于if exist的结果吗?如果是这样,您需要像这样放置括号:(if not exist bin mkdir bin) & gcc hello_world.c -o bin/hello_world.exe... -
使用
mkdir bin 2>nul & gcc.exe hello_world.c -o bin/hello_world.exe时根本不需要IF条件。通过将其从句柄 STDERR 重定向到设备 NUL 来抑制mkdir在目录bin上已经存在的错误消息输出。接下来gcc.exe独立于创建子目录bin的成功或失败执行。如果你想使用 IF 条件,我建议使用mkdir bin 2>nul & if exist bin gcc.exe hello_world.c -o bin/hello_world.exe,它首先创建目录,然后检查目录是否存在,在这种情况下运行gcc.exe。
标签: shell gcc cmd terminal directory