Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批处理-解析相对路径_Windows_Batch File_Cmd_Relative Path - Fatal编程技术网

Windows 批处理-解析相对路径

Windows 批处理-解析相对路径,windows,batch-file,cmd,relative-path,Windows,Batch File,Cmd,Relative Path,我的批处理脚本位于以下目录中: \\test\public\windows\scripts\32\test.bat 我正在尝试获取此文件夹的路径:\test\public\windows\logs 我尝试使用%~dp0获取脚本的路径,我尝试了: SET REL_PATH=..\..\ 问题是它没有显示这个文件夹 SET REL_PATH=..\..\ 路径根据您的指示指向路径,要验证它从何处开始,请 echo %CD% 它将告诉您系统正在查看的路径 然后将相对路径从%CD%设置为脚本的路

我的批处理脚本位于以下目录中:

\\test\public\windows\scripts\32\test.bat
我正在尝试获取此文件夹的路径:\test\public\windows\logs 我尝试使用
%~dp0
获取脚本的路径,我尝试了:

SET REL_PATH=..\..\
问题是它没有显示这个文件夹

SET REL_PATH=..\..\
路径根据您的指示指向路径,要验证它从何处开始,请

echo %CD%
它将告诉您系统正在查看的路径

然后将相对路径从
%CD%
设置为脚本的路径

如果您在执行此操作后陷入困境,请发表评论

例如

echo %CD%
给出
C:\windows\system32

您想在
c:\test\public\windows\scripts\32\test.bat执行批处理文件

你需要这样做

SET REL_PATH=%CD%\..\..\test\public\windows\scripts\32\
要移动到此路径,请执行以下操作:

cd /d %REL_PATH%
要解决UNC路径do PUSHD和POPD,请执行以下操作:

@echo off
pushd \\test\public\windows\scripts\32\

REM do your work
call test.bat

popd

参考资料:

使用网络驱动器时,请使用
PUSHD
命令。这将为UNC路径分配一个未使用的驱动器号,以便您可以像正常一样导航它。然后您可以使用
POPD
来释放它

例如:

@ECHO OFF

PUSHD "\\test\public\windows\scripts\32"

REM This will be \\test\public\windows
DIR ".\..\..\"

POPD

路径是
c:\windows
,变量
REL\u path
没有告诉我发生了什么,因为我使用的是
UNC
路径?据我所知,您的批处理文件位于共享网络驱动器中,您希望从计算机上执行它。。。对吗?也许你只需要把你的UNC路径映射成一条普通路径。可能通过
NET USE
MKLINK
。完成后,路径操作可能会容易得多。