如何获取Windows批处理的父文件夹

时间:2013-05-18 11:31:03

标签: windows batch-file directory parent

我正在编写批处理文件,我需要获取此bat文件的父文件夹。有可能吗? 注意我的意思是批处理文件的父文件夹不是调用该批处理的提示的当前目录。

由于

3 个答案:

答案 0 :(得分:32)

Batch的父文件夹位于变量%~dp0中。例如:

@echo off&setlocal
for %%i in ("%~dp0.") do set "folder=%%~fi"
echo %folder%

答案 1 :(得分:3)

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%

V2

for %%I in ("%~dp0\.") do set ParentFolderName=%%~nxI
echo %ParentFolderName%

V1

这是当前工作目录的父目录

for %%I in (..) do set ParentFolderName=%%~nI%%~xI
echo %ParentFolderName%

参考:For | Microsoft Docs

答案 2 :(得分:1)

如果想要批处理文件所在的文件夹,可以指定

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

输出将是

C:\Users\Public\
C:\Users\Public\..\
C:\Users\