2013-10-24 168 views
1

我已经搜索并找到了几个这样的例子,但我似乎没有得到任何工作......我正在写一个简单的Windows批处理脚本解压缩文件。在我的批处理脚本我有一个变量,zip文件,这是动态分配的,如文件夹和子文件夹最近的Zip文件:批处理命令只从字符串获取文件路径

for /f "tokens=*" %%a in ('dir d:\temp\*.zip /s /b /od') do set zipfile=%%a 

为了简化,考虑到值:

set zipfile=d:\temp\mysubfolder\myfile.zip 

我怎么能获取完整路径,“d:\ temp \ mysubfolder \”?谢谢!

回答

1

简单:

for /f "tokens=*" %%a in ("%zipfile%") do (set fullpath=%%~dpa) 
Echo %fullpath% 

完成!确保%zipfile%没有周围的引号。

蒙娜丽莎

+0

谢谢!根据需要继续操作,得到我的%fullpath%变量。 – mahiro

+1

@mahiro较短,结果相同:'%for %% a(%zipfile%“)设置为”fullpath = %%〜dpa“ – Endoro

+0

@Endoro但那不包括空格 – Monacraft

1

call /?如何使用批处理文件中的标签。 它还解释了如何从参数中提取驱动器,路径和文件名。

set zipfile=d:\temp\mysubfolder\myfile.zip 
call :SETZIPPATH %zipfile% 
goto:eof 

:SETZIPPATH 
set zippath=%~dp1 

您也可以在for循环内进行调用。

+1

谢谢!与我的批处理脚本上面的代码行,但欣赏提示!之前我并不知道批量文件的这些标签,所以这是我下一次学到的东西。 – mahiro

+0

太好了。我很高兴你学到了一些东西,我希望它能让你在未来批量生产更容易。 –

+0

+1,但'call'比'for/f'慢 - > http://www.dostips.com/forum/viewtopic.php?p=10681 – npocmaka

相关问题