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

[文件操作] [已解决]批处理怎样获取当前目录名称、非完整路径、父文件夹名?

首先,小弟不知道该求助帖发在这里对不对。在外面找了找,并没有求助板块。也就发在这里啦。如果不对请见谅。。
=====================================================================================
问题是这样的:
写一个批处理,来显示当前目录的名称。比如该批处理放在了桌面上,路径是:C:\Documents and Settings\Administrator\桌面 .但我要显示的是:该路径有多少个字符?其中包含多少个"\" ?最后才显示出“桌面”
这样。。但要有通用性。即该批处理放到任何地方它都能起做作用。如:d:\1\2\3\4\123 最后的显示是:123
也就是获取当前路径.最后一个以 " \ " 隔开的右边的字符串
这个是我写了一半后写不出来啦!!
  1. @echo off
  2. for /f "tokens=*" %%i in ('cd') do (
  3. echo %%i
  4. set k=%%i)
  5. :d
  6. if not "%k%"=="" (
  7. set /a num+=1
  8. set k=%k:~1%
  9. goto d)
  10. echo 这个路径有%num%个字符
  11. pause
复制代码
PS:这个问题已经困扰了我两天半的时间,一直想破头都没有想出来。
虽然有头绪但始终不能成功。我觉得再这样下去也是没有办法的。
本人的批处理实在差。。给各位添麻烦拉。不好意思!!
表达能力比较差,希望各位能看清我的问题。。。
各位大哥,解答完小弟的问题后,最要紧的是麻烦再动一下手指。把思路也献上!!

祝各位开心快乐!家庭幸福!
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2
(*^__^*)

回复 8# defanive


晕,估计这主题被某位版主提升了,我在第一页看到才回复了的...

TOP

回复 7# CrLf
我说怎么没见过这个帖子。。。
一看原来是09年的啊,还看到了jm的回复。。
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

回复 6# defanive


    for 的效率远高于 call...

TOP

LS代码好,用了call,这样就可以节省一次for。。。

TOP

用 %~nx1 防止目录名含点
  1. @echo off
  2. call :CurDIR "%cd%"
  3. pause
  4. goto :eof
  5. :CurDIR
  6. echo %~nx1
复制代码
1

评分人数

TOP

  1. @echo off
  2. for %%i in ("%~dp0\.") do (
  3.   echo 该批处理的父文件夹是 %%~ni
  4. )
  5. pause
复制代码
1

评分人数

    • CrLf: 乐于助人技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或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. set /a num1=0,num2=0
  3. set "str=%cd%"
  4. :loop
  5. set /a num1+=1
  6. if "%str:~0,1%"=="\" set /a num2+=1
  7. set "str=%str:~1%"
  8. if defined str goto loop
  9. echo 当前路径为:"%cd:"=%"
  10. echo 共计 %num1% 个字符,其中字符"\"有 %num2% 个
  11. for %%i in ("%cd%") do echo 当前目录名为:"%%~nxi"
  12. pause
复制代码
1

评分人数

    • CrLf: 乐于助人技术 + 1
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

for %%i in ("%cd%") do echo %%~ni
1

评分人数

    • CrLf: 请将超过一行的代码用 code 括起来PB -2

TOP

返回列表