如何批量获取文件路径

How to get path of file with batch

我有一个批处理文件存储在 c:\data\profile\script.bat 目录中。 我的 script.dat 包含:

@echo off
echo %~dp0%
pause

如果我运行它,会显示在屏幕上c:\data\profile\。但这不是我想要的。我要在屏幕上显示c:\data\。为此,我将我的批次包含更改为:

@echo off
echo %~dp0:~0,8%
pause

然后我运行这个文件,但是屏幕只显示c:\data\profile\:~0,8。 请告诉我该怎么做?

我想明确地向上一级->

@echo off
set "the_folder=%~dp0"
for %%# in ("%the_folder:~0,-1%") do set "the_folder=%%~dp#"
echo %the_folder%

如果您想要路径中的第一个文件夹:

@echo off
for /f "tokens=2 delims=\" %%# in ("%~dp0") do set "first_folder=%~d0\%%#"
echo %first_folder%

这个怎么样:

@ECHO OFF
PUSHD
CD ..
ECHO %CD%
POPD
PAUSE

如果您这样修改代码,您的代码将可以正常工作:

@echo off
set tempPath=%~dp0
echo %tempPath:~0,8%
pause

如果您需要检索包含批处理文件 (%~dp0) 的父文件夹(.. 是对父文件夹的引用),那么您的批处理文件可能类似于

@echo off
    setlocal enableextensions disabledelayedexpansion
    for %%a in ("%~dp0\..\") do echo %~fa
    pause