Python脚本执行的批处理与脚本中的批处理一样';s文件夹
我使用以下代码行运行批处理(它位于与python脚本不同的文件夹中):Python脚本执行的批处理与脚本中的批处理一样';s文件夹,python,windows,batch-file,jar,Python,Windows,Batch File,Jar,我使用以下代码行运行批处理(它位于与python脚本不同的文件夹中): subprocess.Popen("the_bat.bat", creationflags=subprocess.CREATE_NEW_CONSOLE) 批处理的任务是启动一个.jar(与批处理相同的目录),它在其目录中创建文件夹和文件,但是当由python脚本运行时,jar开始在脚本的文件夹中执行其任务。 有没有关于如何防止这种情况的建议?这是因为bash脚本是在Python的工作目录中执行的,这使得bash脚本的工作目
subprocess.Popen("the_bat.bat", creationflags=subprocess.CREATE_NEW_CONSOLE)
批处理的任务是启动一个.jar(与批处理相同的目录),它在其目录中创建文件夹和文件,但是当由python脚本运行时,jar开始在脚本的文件夹中执行其任务。
有没有关于如何防止这种情况的建议?这是因为bash脚本是在Python的工作目录中执行的,这使得bash脚本的工作目录与Python的工作目录相同。您可以通过将当前工作目录传递给
subprocess.Popen
来解决此问题
subprocess.Popen(r'your script',cwd=r'd:\the\working\directory\your\want\or\root')
批处理文件是%0
参数Echo%~dp0
将打印批处理文件的文件夹。请参见call/?
。加载程序的目录与当前目录不同。您可以通过cwd
参数将子进程的当前工作目录设置为Popen
。下次使用代码格式,按照@code的建议执行。批处理脚本不应该依赖于工作目录来查找与其自身相关的资源。如果在运行另一个程序之前需要设置相对于自身的工作目录,那么它应该pushd%~dp0
。