从批处理文件运行文件

从批处理文件运行文件

我在 Windows 10 中工作。

这是我保存在.bat 文件中的代码:

%windir%\System32\cmd.exe "/K" C:\Users\Alex\AppData\Local\Continuum\anaconda3\Scripts\activate.bat C:\Users\Alex\AppData\Local\Continuum\anaconda3

"c:\Arch\Upload from DB to Redcap.py"

如果我手动打开命令提示符 (cmd) 并执行每一行,一切都会正常工作。但是,如果我执行包含上述内容的 .bat 文件,第一行可以正常执行,但第二行只会将当前文件夹更改为c:\Arch\文件夹,并且Upload from DB to Redcap.py文件不会被执行。如何修复我的代码,以便我的代码的第二行执行Upload from DB to Redcap.py位于的文件c:\Arch\Upload from DB to Redcap.py

答案1

  • cmd /keep vs cmd /continue

如果您使用/k,并且不需要引号,那么直到您键入exit命令,上的下一个命令bat/cmd才会被执行。

您启动了一个“解释器”并且没有离开/退出/关闭它,只有在此之后才会执行您的下一个命令......cmd /keep

当你通过输入“cmd /k”打开新的解释器来使用终端时,它之所以有效是因为你正在直接与它交互,在这种情况下,在 bat 中,有效的行是:cmd /k "...\enable.bat",命令中的 bat 文件也会被执行,因为它在同一行上。

在 bat 中,cmd / k somefile.bat [or] some command它将启动一个新的解释器并保持打开状态以进行输入,直到您输入 exit 或关闭当前 cmd 窗口。否则,它将一直等待您插入一个或多个命令来执行它们,并且在代码中,下一个执行在下一行:(“C:\Arch\Upload from DB to Redcap.py”),除非您为当前解释器输入它,或者输入exitquit 并返回上一个解释器运行下一行命令, 否则它永远不会运行。

尝试替换,你的解释器将逐行执行你的代码......cmd /c

但我认为这甚至不是一个cmd运行他的电话bat/cmd


命令解释器(cmd.exe)将仅通过执行或单击它来执行您的bat/ cmd,无需添加特定指令来执行您的bat脚本。

将以下代码保存为 file.bat 并尝试:

@echo off 

cd /d "%UserProfile%\AppData\Local\Continuum\Anaconda3" 
call .\Scripts\Activate.bat "%UserProfile%\AppData\Local\Continuum\Anaconda3" 

py "c:\Arch\Upload from DB to Redcap.py"

此外,如果您在一个bat文件中使用来执行另一个bat文件,那么使用call c:\file.bat...

[√]命令

[√]cmd/MS 文档

[√]如何在一个bat文件中运行多个bat文件

答案2

如果 python.exe 在您的中PATH,您可以尝试将其添加python.exe到有问题的行前面:

python.exe "c:\Arch\Upload from DB to Redcap.py"

另一个选择是使用以下start命令:

start /b "" "c:\Arch\Upload from DB to Redcap.py"

/b告诉start不要打开新cmd窗口,并""避免将其解释"c:\Arch\Upload from DB to Redcap.py"为标题。

相关内容