2015-11-17 29 views
0

我完全與路徑混淆。 我已經與根文件夾變量批處理文件 - 如何在根後查找第一個文件夾?

set root=D:\Data\Finished 

我打電話與包含文件路徑

c:\test\1.bat D:\Data\Finished\folder1\1.txt 
c:\test\1.bat D:\Data\Finished\folder2\folder3\1.txt 
c:\test\1.bat D:\Data\Finished\1.txt 

我如何獲得第一個文件夾路徑後根1個參數批處理文件?如果沒有文件夾 - 返回根目錄?即:

D:\Data\Finished\folder1 
D:\Data\Finished\folder2 
D:\Data\Finished\ 

我的代碼

call :setfile %FILENAME% 
call :parentfolder %file_path:~0,-1% 

if "%file_parent%"=="D:\Data\" (
    set ut_dir=%file_path% 
) else (
    if "%file_parent%"=="D:\Data\Finished\" (
    set ut_dir=%file_path% 
) else (
    set ut_dir=%file_parent% 
) 
) 

:setfile 
set file=%~f1 
set file_path=%~dp1 
set file_name=%~nx1 
goto :eof 

:parentfolder 
set file_parent=%~dp1 
goto :eof 
+0

你有沒有在你的.bat文件編寫任何代碼的呢? – veda

+0

所有我想出的是使用如果其他比較字符串 –

回答

1
@echo off 
setlocal EnableDelayedExpansion 

set root=D:\Data\Finished 

set "thePath=%~DP1" 
set "result=%root%\" 
for /F "delims=\" %%a in ("!thePath:%root%\=!") do set "result=%root%\%%a" 

echo %result% 

輸出例如:

C:\> test.bat D:\Data\Finished\folder1\1.txt 
D:\Data\Finished\folder1 

C:\> test.bat D:\Data\Finished\folder2\folder3\1.txt 
D:\Data\Finished\folder2 

C:\> test.bat D:\Data\Finished\1.txt 
D:\Data\Finished\ 
+0

它在這裏工作。查看我在答案中添加的輸出示例... – Aacini

相關問題