[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程批处理在线视频分享
返回列表 发帖

[文件操作] 【已解决】批处理怎样提取部分文件的绝对路径?

本帖最后由 屡败屡战 于 2018-5-18 15:42 编辑

有一文本文件a.txt,其左列为文件名标题,其右列为文件名相对应的文件绝对路径
希望求个批处理代码,
要求提取当前目录下(包含子目录)中的a.txt左列中所要查找“文件”的绝对路径(要求完整路径,其绝对路径中要求包含文件名)

文件a.txt中需要查找的本地文件只是当前文件夹中的部分文件,散落到各子目录中,而不是全部集中到一个文件夹的;
当前目录中的子目录名称是临时随意编写的,只是为了帮助说明,故子目录名称是不固定的
当前目录中文档类型实际上有很多(文件格式不限制,为任意后缀名),例如pdf、jpg....等等
当前目录中的子目录的“级数”是“多级”的,多达6~~8级
望论坛大伽们给些启示,谢谢了!!





附件: 您需要登录才可以下载或查看附件。没有帐号?注册

  1. @echo off
  2. PowerShell -c "dir . -Include (type a.txt|select -Skip 1|%%{$_.trim()}) -Recurse|ft Name, FullName" > Result.Log
  3. pause
复制代码

TOP

  1. @echo off
  2. for /f "skip=1 delims= " %%i in (a.txt) do set "_%%~nxi=1"
  3. (
  4.     echo;文件名 文件绝对路径
  5.     for /r %%i in (*) do if defined _%%~nxi echo;%%~nxi %%i
  6. )>Result.Log
复制代码
1

评分人数

TOP

WHY老师好:
谢谢你的代码,3楼的代码正合我意,正是我所需要的,非常感谢!!
老师,怪我没说清楚,即首行的“文件标题、文件绝对路径”在a.txt是没有的,我只是怕发帖说不清楚,临时加上去的,实际上在a.txt中是没有的
在a.txt中只有文件标题而已,我尝试改改代码,但均不行,望告知该怎样改?

TOP

回复 4# 屡败屡战


    假设a.txt只有一列,即文件名列
  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do set "_%%~nxi=1"
  3. (for /r %%i in (*) do if defined _%%~nxi echo;%%~nxi %%~fi)>Result.Log
  4. pause
复制代码
1

评分人数

QQ 33892006

TOP

本帖最后由 屡败屡战 于 2018-5-17 17:45 编辑

yhcfsr老师好:
你的代码我运行了N次,但效果均不理想,输出文件与a.txt文件列表对比后,相去甚远。于是我耗了一晚上精力,查询相关批处理资料,以及对比WHY老师的代码。
最后发现老师你的代码:"delims="中的delims=后面好像缺少制表符。后来更改后再运行就可以了。
论坛是相互学习的地方,我是菜乌,不敢妄自菲薄老师的作品,不知道我说得对不对,如有不妥之处,请谅解!!
欢迎指点一二。

TOP

回复 6# 屡败屡战


    不如直接把文件列表添加到批处理本身的尾部,不需要另外的列表文件 a.txt
  1. @echo off
  2. for /f "delims=:" %%i in ('findstr /b /n ::Mark "%~f0"') do set "n=%%i"
  3. for /f "skip=%n% delims=" %%i in ('type "%~f0"') do set "_%%~nxi=1"
  4. (
  5.     echo;文件名 文件绝对路径
  6.     for /r %%i in (*) do if defined _%%~nxi echo;%%~nxi %%i
  7. )>Result.Log
  8. pause & goto :EOF
  9. ::Mark
  10. a.txt
  11. b.png
  12. c.jpg
复制代码

TOP

本帖最后由 yhcfsr 于 2018-5-17 19:12 编辑

回复 6# 屡败屡战


    看看我说的前提假设.
能自己修改完善,很不错啦。
QQ 33892006

TOP

本帖最后由 屡败屡战 于 2018-5-17 20:24 编辑

楼上老师虚怀若谷,令人钦佩,给点个赞!!
谢谢老师们,费心思了。

TOP

返回列表