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

[文件操作] [已解决]批处理如何获取文件所在文件夹名称

例如
manifest.xml的所在文件夹名称  同时获取所在文件夹之前的绝对路径
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b /a /s "%1\manifest.xml"') do (set "p=%%~dpi"
  3.   cd/d "!p!..\."
  4.   call set "pf=%%p:!cd!\=%%"
  5.   echo !p:~,-1!复制到"!pf:~,-1!")
  6. pause
复制代码

回复 6# miqilaosu 解决了 感谢帮助

TOP

回复 5# smss


    你去新手练功里看下我那里有大家总结的经验,我记得以前做过

TOP

回复 4# miqilaosu

for /f "tokens=1,2 delims=:" %%a in (易经.txt) do echo %%a %%b

看过这样切分的 我太菜还没理解

TOP

回复 3# smss
之前弄过记得是用" delims=/"
实现的 一会用电脑看下

TOP

本帖最后由 smss 于 2019-6-23 20:18 编辑

回复 2# miqilaosu

!BatDir:~,-1!不含\的 盘符路径
能实测下再回复吗 CD到一个变动的循环中 就会进入无限死循环的

TOP

本帖最后由 miqilaosu 于 2019-6-23 19:07 编辑

刚才看错了
  1. cd /d %userprofile%\Desktop\A\
  2. for /f %%i in ('dir /b /s 1.txt' ) do echo.%%~dpi
复制代码
在手机上打的没测试反正就是先进入到根目录不然容易出错,然后for读取到%%i
%%~dpi输出就可以了
manifest.xml 这个就是你的1.txt吧 前边加个空格就行  还有在for之前最好用cd进入根目录  不然会读取到a同级别目录里边文件
  1. for /f "delims=" %%b in ('dir /b /a-h /s "%1\*.xml"') do (
  2. cd /d "%1"
  3. for /f "delims=" %%a in ('dir /b /a /s "%1" "\manifest.xml"') do (set "BatDir=%%~dpa"
  4. echo "!BatDir:~,-1!"
  5. ))
复制代码

TOP

返回列表