複数のフォルダのフルパスを作成しようとしています。基本的には呼び出されるバッチスクリプトがあり、これはそのスクリプト内で使用されるコマンドです。 私はこれをしなかった:ディレクトリパスで複数回戻る方法は?
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
私がアクセスN:\caffe-master\
に意味%currentDirectory:~0,-15%
によるので%~dp0
の出力はN:\caffe-master\examples\mnist
です。 しかし、私がやっていることは間違っているようで、次のコマンドは実行できません!
"%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\
を生成します。これについてはどのよう
'..'はフォルダの親です(そして' .'はフォルダ自体です)。したがって、 'c:¥windows¥system32¥drivers¥..¥.. 'は' c:¥windows'と同じです( 'c:\ windows \ system32 \ drivers \ .. \ .. \。\。\。 \ .')。 –
'set'コマンドラインの' = '記号のあとのスペースを、変数名と値の一部になるので削除します。 – aschipfl
@aschipfl:スペースは削除しましたが、%ROOT%は空です。 – Breeze