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

[文件操作] [分享]批处理往上取3层的目录

【问题描述】
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set p=C:\Users\farben\AppData\Roaming\DBeaverData\workspace6\General\Scripts
  4. for /l %%b in (1,1,3) do (
  5.     for %%c in (!p!) do (
  6.         set p=%%~dpc
  7.         set p=!p:~0,-1!
  8.         echo,!p!
  9.     )
  10. )
  11. pause
复制代码
写了个递归取上级目录
不知道 有没有更好的方法
你们一般遇到这种往上取3层的目录怎么实现呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

【解决方案】
  1. @echo off
  2. set "p=C:\Users\farben\AppData\Roaming\DBeaverData\workspace6\General\Scripts"
  3. for %%i in ("%p%\..\..\..") do (
  4.     echo,%%~fi
  5. )
  6. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我之前用PowerShell写了一个,调用PowerShell一层for就能出来了,帖子在哪里不记得了

TOP

本帖最后由 Nsqs 于 2023-8-21 21:47 编辑
  1. @echo off
  2. powershell -noprofile -executionpolicy bypass "&{param([string]$Path='.',[int]$Return=0);$CurrentPath=[System.IO.DirectoryInfo]::new($Path).FullName;if($Return -eq 0){return $CurrentPath};$Count=[regex]::Matches($CurrentPath,'\\').Count;if($Count -lt $Return){throw '无法返回更多层了!'};$Layer=$Count-$Return;if($Layer -eq 0){$Layer=1};$CurrentPath.Substring(0,$CurrentPath.IndexOf('\',$Layer+1))}" -return 2
  3. pause
复制代码
参数-path可以指定路径 -return指定返回的层数,上面写2表示返回2层
1

评分人数

    • buyiyang: 有所启迪,可以这样传参技术 + 1

TOP

  1. (dir ..\.. -Directory).Parent.FullName
复制代码
虽说这样也行,但是不能按数字来准确指定向上一级返回多少层

TOP

p版的思路
  1. @echo off
  2. call:redir 2
  3. pause
  4. goto :eof
  5. :redir
  6. set "s=..\"
  7. set /a return=%1
  8. for /l %%1 in (1,1,%return%)do (
  9. call set "s=%%s%%..\"
  10. )
  11. for %%1 in (%s%)do echo %%~f1
  12. goto :eof
复制代码

TOP

额,这让我想起第一次看见"D:\aaa\bbb.txt\..\ccc.txt" 这样的路径,脑袋卡壳,想半天才发现的两个点(..)所说的的“上一级目录”不仅仅是“当前目录”的“上一级目录” 的事情

TOP

做个标记,留存学习。楼主辛苦了!

TOP

返回列表