如何在目录path中多次返回?

我正在尝试为多个文件夹创build完整path。 基本上有一个被调用的批处理脚本,这些是在脚本中使用的命令。 我做到了这一点:

ECHO OFF SET currentDirectory=%~dp0 echo %currentDirectory:~0,-15% SET ROOT = %currentDirectory:~0,-15% SET MNIST_DIR = %currentDirectory:~0,-1% SET DATA = %ROOT%/data/mnist SET BUILD= %ROOT%/Build/x64/Release SET BACKEND=lmdb 

%~dp0的输出是N:\caffe-master\examples\mnist
所以通过%currentDirectory:~0,-15%我打算访问N:\caffe-master\ 。 但是,看来我所做的是错误的,下面的命令不能执行!

 "%BUILD%/convert_mnist_data.exe" %DATA%/t10k-images-idx3-ubyte %DATA%/t10k-labels-idx1-ubyte %EXAMPLES%\mnist_test_%BACKEND% --backend=%BACKEND% 

我怎么解决这个问题。 请注意,我也尝试过CD / D也无济于事。 所以这就是我想出来的。

这个怎么样:

 @echo off SET currentDirectory=%~dp0 PUSHD %CD% CD .. CD .. SET MNIST_DIR=%CD% POPD ECHO %MNIST_DIR% PAUSE 

这将生成输出N:\caffe-master\

编辑:通过在脚本的末尾使用PUSHD %CD%POPD我们可以确保我们将始终在原始目录中结束。

..是一个文件夹的父(和.是文件夹本身)。 所以c:\windows\system32\drivers\..\..等于c:\windows (如c:\windows\system32\drivers\..\..\.\.\.\.\. )。

麻生太郎

等号两边没有空格。 你正在设置%root %