bat 根据变量中的文件路径取得目录
我知道%~dp0可以取得文件的路径,可是必须是用输入参数取,有没有方法可以将一个文件路径指定给一个变量,再从这个变量取得文件目录呢?比如setpathA="C:\Work...
我知道%~dp0可以取得文件的路径,可是必须是用输入参数取,有没有方法可以将一个文件路径指定给一个变量,再从这个变量取得文件目录呢?
比如
set pathA="C:\Work\1.txt"
然后从pathA取得"C:\Work\"这个目录名
有可能么? 展开
比如
set pathA="C:\Work\1.txt"
然后从pathA取得"C:\Work\"这个目录名
有可能么? 展开
1个回答
展开全部
你可以,提取完整路径之后,再提取。文件名和扩展名 %~nx0
然后用set 将完整路径的文件名+扩展名替换未空。
使用方法。
set path=%path:文件名和扩展名=%
然后得出的%path%即使路径目录。
还有一个方法就是
得到完整文件路径,有CD进入
然后 %cd% 即使目录。
看这个,试试你就知道了。
@echo off
set paths=%0
cd %paths%
echo %cd%
pause
然后以你的为例。
@echo off
set pathA="C:\Work\1.txt"
cd %patha%
echo %cd%
pause
然后用set 将完整路径的文件名+扩展名替换未空。
使用方法。
set path=%path:文件名和扩展名=%
然后得出的%path%即使路径目录。
还有一个方法就是
得到完整文件路径,有CD进入
然后 %cd% 即使目录。
看这个,试试你就知道了。
@echo off
set paths=%0
cd %paths%
echo %cd%
pause
然后以你的为例。
@echo off
set pathA="C:\Work\1.txt"
cd %patha%
echo %cd%
pause
追问
先谢谢你
然后想问一下第一个方法这句话是什么意思 set path=%path:文件名和扩展名=%
path不是指环境变量的path吧?
因为我觉得 %~nx0这个是针对输入参数使用的,所以不太明白这里set path的含义,能解释一下么?
第二个方法试了,结论是可以取得目录了,唯一不足的是这一句cd %patha%
会提示目录名无效什么的
追答
首先抱歉下,第二方案是行不通的。具体你仔细检查就知道了。
因为被推荐所以改不了,只有等你追问。
然后你的问题。
set path=%path:文件名和扩展名=%
这个。
这个算是SET的高级用法吧。
就是可以将等号左边的替换为等号右边的。
将变量中的某字符替换为别的字符。
看个例子吧。
@echo off
set a=abcdefgh
set a=%a:abc=123%
echo %a%
pause
你可以修改123为任何字符试试效果就会懂了。
我那个
set path=%path:文件名和扩展名=%
就是将等号左边的替换未空。(如果右边为空就等于替换为空。空格也算是符号的。)
然后按你的题意给你答案:
@echo off
set pathA="C:\Work\1.txt"
for /f %%a in ("%patha%") do (
set pathb=%%~dpa
)
echo %pathb%
pause
稍微解释下,
将变量patha代入到for 中,通过FOR来扩充路径。然后将扩充的路径设置为变量pathb
扩充你可以cmd中输入FOR /?最后段就是。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询