2015-11-02 99 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 
相關問題