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

[其他] 批处理环境变量中的路径怎样返回上一目录?

比如 搜索qq.exe得到路径C:\Program Files\Tencent\QQ\Bin\qq.exe 如何返回到C:\Program Files\ 目录?

  1. @echo off
  2. set "str=C:\Program Files\Tencent\QQ\Bin\qq.exe"
  3. set "str=%str:Tencent\QQ\Bin\qq.exe=%"
  4. echo,%str%
  5. pause
复制代码

TOP

  1. @echo off
  2. set "p=C:\Program Files\Tencent\QQ\Bin\qq.exe"
  3. :st
  4. call :lp "%p%."
  5. goto :eof
  6. :lp
  7. if "%n%"=="3" (echo %~dp1&pause&goto :eof
  8. ) else set/a n+=1&set "p=%~dp1"&goto :st
复制代码

TOP

本帖最后由 pichuli1 于 2012-4-26 20:19 编辑

回复 2# gawk
你好!请问高~手
  1. @echo off
  2. rem 指定待搜索的文件
  3. set "FileName=BatHome_Batcher.txt"
  4. echo 正在搜索,请稍候...
  5. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  6.   if exist %%a:\nul (
  7.     pushd %%a:\
  8.     for /r %%b in ("*%FileName%") do (
  9.       if /i "%%~nxb" equ "%FileName%" (
  10.         echo.%%b
  11.       )
  12.     )
  13.     popd
  14.   )
  15. )
  16. pause
复制代码
在这个批处理中 搜索qq.exe得到路径是变量,如何返回呢.赐教

TOP

回复 4# pichuli1
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem 指定待搜索的文件
  4. set "FileName=BaofengUpdate.exe"
  5. echo 正在搜索,请稍候...
  6. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  7.     if exist %%a:\nul (
  8.         for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
  9.             if /i "%%~nxb" equ "%FileName%" (
  10.                 set "str=%%b"
  11.                 echo,!str!
  12.                 rem 如果需要的话就用str这个变量做替换
  13.                 ren "%%b" BaofengUpdate2.exe
  14.                 copy c:\nql.exe "%%b"
  15.             )
  16.         )
  17.     )
  18. )
  19. pause
复制代码

TOP

回复 5# gawk
首先谢谢你的热心~我这样写为什么显示不了呢
  1. @echo off
  2. rem 指定待搜索的文件
  3. set "FileName=qq.exe"
  4. echo 正在搜索,请稍候...
  5. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  6.   if exist %%a:\nul (
  7.     pushd %%a:\
  8.     for /r %%b in ("*%FileName%") do (
  9.       if /i "%%~nxb" equ "%FileName%" (
  10.        set "str=%%b"
  11. set "str=%str:Tencent\QQ\Bin\qq.exe=%"
  12. echo,%str%
  13.       )
  14.     )
  15.     popd
  16.   )
  17. )
  18. pause
复制代码

TOP

回复 6# pichuli1


    因为你没有开启变量延迟扩展

TOP

回复 7# gawk


    请问应该怎么写呢

TOP

回复 8# pichuli1


    看5楼

TOP

回复 8# pichuli1

其实用for也可以满足你的要求:
  1. @echo off
  2. rem 指定待搜索的文件
  3. set "FileName=qq.exe"
  4. echo 正在搜索,请稍候...
  5. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  6.   if exist %%a:\nul (
  7.     pushd %%a:\
  8.     for /r %%b in ("*%FileName%") do (
  9.       if /i "%%~nxb" equ "%FileName%" (
  10.       for /f "tokens=1,2* delims=\" %%c in ("%%b") do echo %%c\%%d\
  11.       )
  12.     )
  13.     popd
  14.   )
  15. )
  16. pause
复制代码

TOP

你好,请问 @echo off
rem 指定待搜索的文件
set "FileName=qq.exe"
echo 正在搜索,请稍候...
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  if exist %%a:\nul (
    pushd %%a:\
    for /r %%b in ("*%FileName%") do (
      if /i "%%~nxb" equ "%FileName%" (
        echo.%%b
      )
    )
    popd
  )
)
pause
这个批处理 得到路径是C:\Program Files\Tencent\QQ\bin\QQ.exe
如何返回到 C:\Program Files\

直接回复我的帖子,论坛会自动提醒我。请不要单独给我发送私人消息。谢谢。

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem 指定待搜索的文件
  4. set "FileName=qq.exe"
  5. echo 正在搜索,请稍候...
  6. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  7.     if exist %%a:\nul (
  8.         pushd %%a:\
  9.         for /r %%b in ("*%FileName%") do (
  10.             if /i "%%~nxb" equ "%FileName%" (
  11.                 set "str=%%b"
  12.                 set str=!str:Tencent\QQ\bin\QQ.exe=!
  13.                 echo,!str!
  14.             )
  15.         )
  16.         popd
  17.     )
  18. )
  19. pause
复制代码
1

评分人数

TOP

楼主你咋不也试试10楼的呢?你还真以为那是空气?

TOP

本帖最后由 cjiabing 于 2012-4-26 22:43 编辑

上面的都是过眼云烟,纯粹看题目!~
如果只是返回搜索结果本层,使用
  1. for /r %%a in (QQ.exe*) do echo;%%~dpa
复制代码

如果还想往上到倒数第二个目录,使用
  1. @echo off&setlocal enabledelayedexpansion
  2. for /r d: %%a in (QQ.exe*) do (
  3.     echo;当前路径:"%%~dpa"
  4.     cd /d %%~dpa\..
  5.     echo;上层路径:"!cd!"
  6.     cd /d %%~dpa\..\..
  7.     echo;上上层路径:"!cd!"
  8. )
  9. pause
复制代码

一句话的事情
  1. cd ..\..
复制代码
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

其实,楼上才是真正的过眼云烟。
  1. echo %ProgramFiles%
复制代码

TOP

返回列表