我想在基于包含的目录名的目录重命名文件,像如何从批处理文件中的完整路径中提取目录的名称?
c:\bin\data01\foo.txt
到
c:\bin\data01\data01.txt
以下后How to get folder path from file path with CMD。
我想在基于包含的目录名的目录重命名文件,像如何从批处理文件中的完整路径中提取目录的名称?
c:\bin\data01\foo.txt
到
c:\bin\data01\data01.txt
以下后How to get folder path from file path with CMD。
如果你只需要父目录的名称,你可以使用类似基于弗雷泽格雷厄姆的回答为10
ECHO %~p0>path.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10 delims=\" %%G in (path.txt) DO (
IF NOT [%%G]==[] SET myVar=%%G
IF NOT [%%H]==[] SET myVar=%%H
IF NOT [%%I]==[] SET myVar=%%I
IF NOT [%%J]==[] SET myVar=%%J
IF NOT [%%K]==[] SET myVar=%%K
IF NOT [%%L]==[] SET myVar=%%L
IF NOT [%%M]==[] SET myVar=%%M
IF NOT [%%N]==[] SET myVar=%%N
IF NOT [%%O]==[] SET myVar=%%O
IF NOT [%%P]==[] SET myVar=%%P
)
DEL path.txt /F /Q
ECHO %myVar%
最大嵌套级别,其工作原理如下因素
微软解释了如何为循环来标记文件路径,然后拉出目录名称做了一个很好的批处理参考...
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true
如果你有一个文件,其中包含一个文件tmp.txt的列表...
c:\temp\folder\foo.txt
可以解析批处理文件名者与...
for /F "delims=\ tokens=1,2,3" %%i in (tmp.txt) do call echo %%i %%k %%j
和产生...
%%i = c:
%%j = temp
%%k = folder
后,您可以使用该目录名称相匹配,如复印文件名中的变量。但是,这只有在所有路径具有相同深度的情况下才有效。