标题: [其他] 批处理如何获取当前文件夹名称? [打印本页]
作者: keman1984 时间: 2009-12-13 16:11 标题: 批处理如何获取当前文件夹名称?
怎么查找到当前文件夹名称呢?
比如 %1 : "O:\VSS\VSS\04 SFW_JS\BAT_Automation\filename.bat"
要得到 :"BAT_Automation"
代码该怎么写呢?
新人, 顺便报道.
谢谢各位!
作者: Seter 时间: 2009-12-13 16:21
- @echo off
- for /f "delims=" %%i in ("%cd%") do set folder=%%~ni
- echo %folder%
- pause
复制代码
作者: keman1984 时间: 2009-12-13 16:34 标题: Hi,
哦,这样果然是可以的.
但是,可以再多回答几个问题么?
1. 下面的下代码为什么不好用呢?
- @echo off
- for /f "delims=" %%i in ("%~dp1") do set folder=%%~ni
- echo %folder%
- pause
复制代码
2. %%~ni有什么特殊的含义么? 好像没有见到过.
3. for循环这里为什么能找到最后一个文件夹的名称呢?
我这样写,出来的是%CD%啊?为什么?
- @echo off
- for /f "delims=" %%i in ("%CD%") do echo %%i
- pause
复制代码
作者: vsbat 时间: 2009-12-13 16:41
for /?
FOR 变量参照的替换已被增强。您现在可以使用下列
选项语法:
~I - 删除任何引号("),扩充 %I
%~fI - 将 %I 扩充到一个完全合格的路径名
%~dI - 仅将 %I 扩充到一个驱动器号
%~pI - 仅将 %I 扩充到一个路径
%~nI - 仅将 %I 扩充到一个文件名
%~xI - 仅将 %I 扩充到一个文件扩展名
%~sI - 扩充的路径只含有短名
%~aI - 将 %I 扩充到文件的文件属性
%~tI - 将 %I 扩充到文件的日期/时间
%~zI - 将 %I 扩充到文件的大小
%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩充到
空字符串
可以组合修饰符来得到多重结果:
%~dpI - 仅将 %I 扩充到一个驱动器号和路径
%~nxI - 仅将 %I 扩充到一个文件名和扩展名
%~fsI - 仅将 %I 扩充到一个带有短名的完整路径名
%~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充
到找到的第一个驱动器号和路径。
%~ftzaI - 将 %I 扩充到类似输出线路的 DIR
[ 本帖最后由 vsbat 于 2009-12-13 16:42 编辑 ]
作者: keman1984 时间: 2009-12-13 16:46 标题: %CD% 和%dp1
%CD% 和%dp1
为什么得出的效果是不一样的呢?两个echo是一样的啊?
批处理里面也有类型和属性一说么?
作者: vsbat 时间: 2009-12-13 16:58
%~dp1 ??
应该是 %~dp0 吧--
这样才和 %cd% 有可比性
差别是 比如 %cd% 是 C:\test
那么 %~dp0 就是C:\test\
多一个 \
作者: keman1984 时间: 2009-12-13 17:02 标题: 结贴
我也看到了,呵呵
也这么试验了一把- @echo off
- for /f "delims=" %%i in ("O:\VSS\VSS\04 SFW_JS\BAT_Automation") do set folder=%%~ni
- echo %folder%
- pause
复制代码
看来对%CD%的理解是没有错的.
谢谢了.
但是, 怎么结贴呢?
作者: batman 时间: 2009-12-13 17:55 标题: 回复 7楼 的帖子
看下别人是怎么结的。。。
作者: slore 时间: 2009-12-13 17:59
- @echo off
- echo %~dp0
- echo %CD%
- CD /D C:\WINDOWS\SYSTEM32
- echo %~dp0
- echo %CD%
- pause
复制代码
作者: qy11250117 时间: 2011-12-6 20:52
slore 发表于 2009-12-13 17:59
原来如此
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |