Batch file 需要使用批处理文件(添加为系统路径)的当前路径(其中我在终端写入“addpath”)

Batch file 需要使用批处理文件(添加为系统路径)的当前路径(其中我在终端写入“addpath”),batch-file,path,environment-variables,Batch File,Path,Environment Variables,我添加了一个批处理文件(“addpath.bat”)作为系统路径,这样我就可以使用命令“addpath”从任何文件夹运行它。我需要程序返回调用程序的路径(而不是实际文件“addpath.bat”的位置) 我试过: %cd% 但这给了我实际文件的位置,这不是我想要的 “addpath.bat” python文件仅用于打印批处理文件的输出 “addpath.py” 如果我在桌面(“C:\Users\user\desktop”)上打开终端(CMD或PowerShell),我希望程序返回以下路径: C:

我添加了一个批处理文件(“addpath.bat”)作为系统路径,这样我就可以使用命令“addpath”从任何文件夹运行它。我需要程序返回调用程序的路径(而不是实际文件“addpath.bat”的位置)

我试过:
%cd%
但这给了我实际文件的位置,这不是我想要的

“addpath.bat”

python文件仅用于打印批处理文件的输出

“addpath.py”

如果我在桌面(“C:\Users\user\desktop”)上打开终端(CMD或PowerShell),我希望程序返回以下路径:


C:\Users\user\Desktop

正如@Mofi所说,问题是我在试图获取路径之前更改了目录。解决方案是在更改目录之前定义mypath,然后在python文件中使用它

“addpath.bat”

“addpath.py”


问题是,正如@Mofi所说,我在试图获取路径之前更改了目录。解决方案是在更改目录之前定义mypath,然后在python文件中使用它

“addpath.bat”

“addpath.py”


那么,如果您使用
cd
更改当前目录,那么任何程序如何知道以前的当前目录是什么?如果启动批处理文件时的当前目录位于与驱动器C:不同的驱动器上,则批处理文件中使用的命令
cd
将根本不起作用。解决方案很可能是单行
python“%~dp0addpath.py”“%CD%”
。但是有一些Python方法可以在不通过命令行参数将当前目录路径传递给Python脚本的情况下运行。我建议打开一个窗口,运行
cd/?
并读取输出帮助,运行
pushd/?
并读取输出帮助,运行
popd/?
并读取输出帮助,运行
call/?
并读取输出帮助。好的,如果使用
cd
更改当前目录,任何程序如何知道以前的当前目录是什么?如果启动批处理文件时的当前目录位于与驱动器C:不同的驱动器上,则批处理文件中使用的命令
cd
将根本不起作用。解决方案很可能是单行
python“%~dp0addpath.py”“%CD%”
。但是,有一些Python方法可以在不通过命令行参数将当前目录路径传递到Python脚本的情况下运行。我建议打开一个窗口,运行
cd/?
并读取输出帮助,运行
pushd/?
并读取输出帮助,运行
popd/?
并读取输出帮助,运行
call/?
并读取输出帮助。
cd C:\path\to\pythonfile
SET mypath=%cd%
python addpath.py %mypath%
import sys
print(f'\n\nThis is the path: {sys.argv[1]}')
SET mypath=%CD%
cd C:\path\to\pythonfile
python addpath.py %mypath%
import sys
print(f'\n\nThis is the path: {sys.argv[1]}')