Tob*_*bia 14 windows directory batch-file parent
我正在编写批处理文件,我需要获取此bat文件的父文件夹.有可能吗?NB我是指批处理文件的父文件夹,而不是调用该批处理的提示的当前目录.
谢谢
End*_*oro 33
Batch的父文件夹%~dp0位于Variable中.例:
@echo off&setlocal
for %%i in ("%~dp0.") do set "folder=%%~fi"
echo %folder%
Run Code Online (Sandbox Code Playgroud)
如果你想要批处理文件所在的文件夹,可以指定
SET folder=%~dp0
正如另一个答案中提到的。
如果您想要批处理文件位置上方的文件夹,您可以指定
SET folder=%~dp0..\
但是,如果您打算向用户显示路径,那么最后一个变量可能不够。在这种情况下,也许最好
FOR %%A IN ("%~dp0.") DO SET folder=%%~dpA
例如,如果您有以下脚本C:\Users\Public
@ECHO OFF
ECHO %~dp0
ECHO %~dp0..\
FOR %%A IN ("%~dp0.") DO ECHO %%~dpA
Run Code Online (Sandbox Code Playgroud)
输出将是
C:\Users\Public\
C:\Users\Public\..\
C:\Users\
Run Code Online (Sandbox Code Playgroud)
Endoro 的答案对我也不起作用,但这确实有效。这就是我用自己做的事情。
V3
其中之一应该做正确的事情
for %%I in ("%~dp0.") do for %%J in ("%%~dpI.") do set ParentFolderName=%%~nxJ
echo %ParentFolderName%
for %%I in ("%~dp0.") do for %%J in ("%%~dpI.") do set ParentFolderName=%%~dpnxJ
echo %ParentFolderName%
Run Code Online (Sandbox Code Playgroud)
V2:
for %%I in ("%~dp0\.") do set ParentFolderName=%%~nxI
echo %ParentFolderName%
Run Code Online (Sandbox Code Playgroud)
V1:
这个获取当前工作目录的父目录
for %%I in (..) do set ParentFolderName=%%~nI%%~xI
echo %ParentFolderName%
Run Code Online (Sandbox Code Playgroud)
参考:对于| 微软文档