如何批量获取文件路径
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
我有一个批处理文件存储在 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