2015-11-02 47 views
1

我有一个存储在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。 请让我知道如何做到这一点?

+1

的可能的复制[在批处理文件中执行子字符串的最佳方法是什么?](http://stackoverflow.com/questions/636381/what-is-the-best-way-to-do-a-substring-in-a -batch-file) – Marged

+0

你有没有试过写在那里:http://stackoverflow.com/questions/636381/what-is-the-best-way-to-do-a-substring-in-a-batch-文件 – Marged

回答

1

如何:

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

您的代码将如果你这样修改它:

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

我想明确一个水平上调>

@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% 
1

如果需要检索父(..是参考父文件夹),其中包含批处理文件(%~dp0)的文件夹中,那么你的批处理文件就应该像这样

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