标题: [文件操作] 【已解决】批处理怎样提取部分文件的绝对路径? [打印本页]
作者: 屡败屡战 时间: 2018-5-16 09:16 标题: 【已解决】批处理怎样提取部分文件的绝对路径?
有一文本文件a.txt,其左列为文件名标题,其右列为文件名相对应的文件绝对路径
希望求个批处理代码,
要求提取当前目录下(包含子目录)中的a.txt左列中所要查找“文件”的绝对路径(要求完整路径,其绝对路径中要求包含文件名)
文件a.txt中需要查找的本地文件只是当前文件夹中的部分文件,散落到各子目录中,而不是全部集中到一个文件夹的;
当前目录中的子目录名称是临时随意编写的,只是为了帮助说明,故子目录名称是不固定的
当前目录中文档类型实际上有很多(文件格式不限制,为任意后缀名),例如pdf、jpg....等等
当前目录中的子目录的“级数”是“多级”的,多达6~~8级
望论坛大伽们给些启示,谢谢了!!
作者: WHY 时间: 2018-5-16 11:09
- @echo off
- PowerShell -c "dir . -Include (type a.txt|select -Skip 1|%%{$_.trim()}) -Recurse|ft Name, FullName" > Result.Log
- pause
复制代码
作者: WHY 时间: 2018-5-16 11:27
- @echo off
- for /f "skip=1 delims= " %%i in (a.txt) do set "_%%~nxi=1"
- (
- echo;文件名 文件绝对路径
- for /r %%i in (*) do if defined _%%~nxi echo;%%~nxi %%i
- )>Result.Log
复制代码
作者: 屡败屡战 时间: 2018-5-16 15:51
WHY老师好:
谢谢你的代码,3楼的代码正合我意,正是我所需要的,非常感谢!!
老师,怪我没说清楚,即首行的“文件标题、文件绝对路径”在a.txt是没有的,我只是怕发帖说不清楚,临时加上去的,实际上在a.txt中是没有的
在a.txt中只有文件标题而已,我尝试改改代码,但均不行,望告知该怎样改?
作者: yhcfsr 时间: 2018-5-16 17:43
回复 4# 屡败屡战
假设a.txt只有一列,即文件名列- @echo off
- for /f "delims=" %%i in (a.txt) do set "_%%~nxi=1"
- (for /r %%i in (*) do if defined _%%~nxi echo;%%~nxi %%~fi)>Result.Log
- pause
复制代码
作者: 屡败屡战 时间: 2018-5-17 12:08
本帖最后由 屡败屡战 于 2018-5-17 17:45 编辑
yhcfsr老师好:
你的代码我运行了N次,但效果均不理想,输出文件与a.txt文件列表对比后,相去甚远。于是我耗了一晚上精力,查询相关批处理资料,以及对比WHY老师的代码。
最后发现老师你的代码:"delims="中的delims=后面好像缺少制表符。后来更改后再运行就可以了。
论坛是相互学习的地方,我是菜乌,不敢妄自菲薄老师的作品,不知道我说得对不对,如有不妥之处,请谅解!!
欢迎指点一二。
作者: WHY 时间: 2018-5-17 18:45
回复 6# 屡败屡战
不如直接把文件列表添加到批处理本身的尾部,不需要另外的列表文件 a.txt- @echo off
- for /f "delims=:" %%i in ('findstr /b /n ::Mark "%~f0"') do set "n=%%i"
- for /f "skip=%n% delims=" %%i in ('type "%~f0"') do set "_%%~nxi=1"
- (
- echo;文件名 文件绝对路径
- for /r %%i in (*) do if defined _%%~nxi echo;%%~nxi %%i
- )>Result.Log
- pause & goto :EOF
-
- ::Mark
- a.txt
- b.png
- c.jpg
复制代码
作者: yhcfsr 时间: 2018-5-17 18:59
本帖最后由 yhcfsr 于 2018-5-17 19:12 编辑
回复 6# 屡败屡战
看看我说的前提假设.
能自己修改完善,很不错啦。
作者: 屡败屡战 时间: 2018-5-17 19:56
本帖最后由 屡败屡战 于 2018-5-17 20:24 编辑
楼上老师虚怀若谷,令人钦佩,给点个赞!!
谢谢老师们,费心思了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |