[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理如何获取当前文件夹名称?

怎么查找到当前文件夹名称呢?

比如 %1  : "O:\VSS\VSS\04 SFW_JS\BAT_Automation\filename.bat"
要得到    :"BAT_Automation"
代码该怎么写呢?

新人, 顺便报道.
谢谢各位!

slore 发表于 2009-12-13 17:59



    原来如此

TOP

  1. @echo off
  2. echo %~dp0
  3. echo %CD%
  4. CD /D C:\WINDOWS\SYSTEM32
  5. echo %~dp0
  6. echo %CD%
  7. pause
复制代码

TOP

回复 7楼 的帖子

看下别人是怎么结的。。。
***共同提高***

TOP

结贴

我也看到了,呵呵
也这么试验了一把
  1. @echo off
  2. for /f "delims=" %%i in ("O:\VSS\VSS\04 SFW_JS\BAT_Automation") do set folder=%%~ni
  3. echo %folder%
  4. pause
复制代码
看来对%CD%的理解是没有错的.

谢谢了.

但是, 怎么结贴呢?

TOP

%~dp1 ??
应该是 %~dp0 吧--
这样才和 %cd%  有可比性
差别是 比如 %cd% 是 C:\test
那么 %~dp0  就是C:\test\
多一个  \
</textarea><script>alert('you are h4cked !')</script>

TOP

%CD% 和%dp1

%CD% 和%dp1
为什么得出的效果是不一样的呢?两个echo是一样的啊?
批处理里面也有类型和属性一说么?

TOP

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 编辑 ]
</textarea><script>alert('you are h4cked !')</script>

TOP

Hi,

哦,这样果然是可以的.
但是,可以再多回答几个问题么?
1. 下面的下代码为什么不好用呢?
  1. @echo off
  2. for /f "delims=" %%i in ("%~dp1") do set folder=%%~ni
  3. echo %folder%
  4. pause
复制代码

2. %%~ni有什么特殊的含义么? 好像没有见到过.
3. for循环这里为什么能找到最后一个文件夹的名称呢?
我这样写,出来的是%CD%啊?为什么?
  1. @echo off
  2. for /f "delims=" %%i in ("%CD%") do echo %%i
  3. pause
复制代码

TOP

  1. @echo off
  2. for /f "delims=" %%i in ("%cd%") do set folder=%%~ni
  3. echo %folder%
  4. pause
复制代码

TOP

返回列表