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

[其他] [已解决]批处理怎样获取指定文件所在的目录?

怎样得到指定文件所在的目录?比如说我的文件在“d:\Program Files\Thunder Network\Thunder\Thunder.exe”,如何得到“d:\Program Files\Thunder Network\Thunder\”这个目录,我用%cd%好像不行,这个好像只能获得批处理所在的目录,在论坛上也找不到,急救大家帮忙。

[ 本帖最后由 anymany 于 2009-12-19 17:05 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

  1. @echo off
  2. for %%a in ("d:\Program Files\Thunder Network\Thunder\Thunder.exe") do (
  3.   echo %%~dpa
  4. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

呵呵!!看了楼上的又学到了一个新参数 %%~dpa
d代表盘符 p代表路径

TOP

本人新人,趁此机会报个道。
真是多谢管理员大哥了,我整了一个下午也没整好,顺便问下,为什么这论坛找不到广告,真是少见的很啊

TOP

先占位

用这几个命令 DIR find FINDSTR FOR

FOR 来实现对所有分区的查找, dir filename.ext /s /b  来实现在某一个分区里查找所有的 filename.ext 文件, 直接把输出送给 FINDSTR 或 find 过滤或者生成临时文件, 再用 FOR ...FINDSTR 或 find 来分析判断 还有 %~dpx 参数的特性来获取 路径(去除了文件名),

[ 本帖最后由 neorobin 于 2009-12-12 20:49 编辑 ]

TOP

回复 1楼 的帖子

  1. @echo off
  2. cd /d "d:\Program Files\Thunder Network\Thunder"
  3. echo %cd%&pause>nul
复制代码
  1. @echo off
  2. call :lp "d:\Program Files\Thunder Network\Thunder\Thunder.exe"
  3. pause>nul&goto :oef
  4. :lp
  5. echo %~dp1
复制代码
***共同提高***

TOP

我真是笨啊,怎么就没想到
  1. @echo off
  2. cd /d "d:\Program Files\Thunder Network\Thunder"
  3. echo %cd%
复制代码

TOP

回复 4楼 的帖子

如果想知道为什么论坛没有广告,请参考:论坛设置及管理措施问与答
http://bbs.bathome.net/thread-2116-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. cd /d "d:\Program Files\Thunder Network\Thunder"
  3. echo %cd%&pause>nul
复制代码
我发现这一句没有用for语句好,for语名还可以用来针对变量,而上边的一句不能针对变量

TOP

回复 9楼 的帖子

“不能针对变量”具体是指什么?能否举个例子说明一下?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

这怪我没有表述明白
比如说用for语句全盘查找thunder.exe,我不确定它在哪个路径,这个路径就是个变量
如果是"d:\Program Files\Thunder Network\Thunder\Thunder.exe"的话当然可以用
  1. @echo off
  2. cd /d "d:\Program Files\Thunder Network\Thunder"
  3. %cd%
复制代码
但是假如令  t="路径",也就是不确定具体路径,那么就无法使用
  1. cd \d "t"
复制代码
切换到路径t的上级目录了吧,所以我说用
  1. @echo off
  2. for %%a in ("t") do (
  3.   echo %%~dpa
  4. )
复制代码
比较好,简单的问题,怪我没有表述明白

TOP

返回列表