Board logo

标题: [文件操作] [已解决]批处理如何根据别名(关键词、关键字)归档文件 [打印本页]

作者: dsgmn    时间: 2018-9-17 19:46     标题: [已解决]批处理如何根据别名(关键词、关键字)归档文件

本帖最后由 dsgmn 于 2018-10-8 20:39 编辑

自己已经定义了环境变量%gdwj%位于某路径,其子目录是若干个文件夹如:"A0001张三"..."A0007张三"..."A1024赵六";"A0001张三"文件夹可能的别名(关键词、关键字)如:癞头张、吹牛三、大张三,"A0007张三"文件夹可能的别名(关键词、关键字)如:瘦三、小张三。
    现在要通过把若干个可能含有别名的文件(夹)批量sendto到某个批处理文件,自动调用资源管理器打开相应环境变量%gdwj%的子目录;sendto传参时如果遇到叫张三的文件(夹),"A0001张三"、"A0007张三"这两个文件夹都打开,如果遇到叫吹牛三的文件(夹),只打开"A0001张三"文件夹;就是可能是多个别名对应一个文件夹,也可能一个别名对应多个文件夹
    请问这个位于shell:sendto文件夹下的批处理文件要如何写?如果需要写配置文件ini,格式要如何写?如果sendto时能遍历整个文件夹下的文件最好,如果不能,自己逐个文件sendto也行。
作者: /zhqsystem/zhq    时间: 2018-9-17 21:12

for /f "delims=" %%i in ('dir/a-d/s/b "%gdwj%\*张三*.*"')do start "" "%%~fi"
作者: dsgmn    时间: 2018-9-18 19:14

多谢楼上,但是您这个好像是打开文件,不是调用资源管理器打开文件夹。
作者: /zhqsystem/zhq    时间: 2018-9-18 22:08

回复 3# dsgmn


    http://www.bathome.net/thread-5100-1-11.html
作者: dsgmn    时间: 2018-9-18 22:47

回复 4# /zhqsystem/zhq 知道如何调用资源管理器,关键想请教的是怎么依据别名关键字判断出相应的文件夹,这部分要怎么写。
作者: /zhqsystem/zhq    时间: 2018-9-19 00:12

回复 5# dsgmn
%%~dpi
作者: xczxczxcz    时间: 2018-9-19 18:19

一个文件夹内若有许多个*张三*的文件,这个文件夹只会打开一次。若文件夹名也有张三名的就打开2次。
  1. @echo off
  2. for /d /r "%gdwj%" %%a in ("*张三*") do explorer "%%a"
  3. for /d /r "%gdwj%" %%a in ("*") do (call :FILE "%%a" &popd &if defined # explorer "%%a" &set "#=")
  4. exit
  5. :FILE
  6. for /f "delims=" %%a in ('dir/a-d/b %1') do (pushd %1 & if /i exist "*张三*" (set "#=#" & goto :eof))
复制代码
====================
作者: dsgmn    时间: 2018-9-19 18:51

环境变量目的是为了换了硬盘或者电脑等等时路径会变,但是我直接更改环境变量的位置即可继续使用。

将“文档管理\1234”下的“吹牛三.txt、大张三.txt、文件夹.txt”同时选中右击“发送”到“归档.bat”后打开环境变量gdwj之下的“A0001张三”文件夹;

但是如果将“文档管理\1234”下的“张三.txt”进行相应操作后则同时打开“A0001张三”、“A0007张三”两个文件夹。
作者: dsgmn    时间: 2018-9-19 19:20

回复 7# xczxczxcz

多谢您的回答,上图可能比较容易表达我的意思,不好意思语文是体育老师教的。
作者: dsgmn    时间: 2018-9-19 21:51

一个叫“Flying  頓成”的大佬帮我写了一个test.cmd文件:
  1. @ECHO OFF
  2. :: 按自己的需要修改路径 :::::
  3. SET gdwj=%USERPROFILE%\Desktop\Test
  4. SET conf=%gdwj%\test.ini
  5. :::::::::::::::::::::::::::::
  6. :Top
  7. SET TARGET=%1
  8. IF !%TARGET%! == !! GOTO :Done
  9. SHIFT
  10. FOR %%f IN (%TARGET%) DO SET FILE=%%~nf
  11. FOR /F "tokens=1,2 delims==" %%p IN (%conf%) DO (
  12. IF "%FILE%" == "%%p" (
  13. IF EXIST %gdwj%\*%%q* (
  14. FOR /D %%d IN (%gdwj%\*%%q*) DO (
  15. ECHO %%d
  16. START %%d
  17. timeout /t 3
  18. )
  19. )
  20. )
  21. )
  22. GOTO :Top
  23. :Done
复制代码
配置文件test.ini
  1. 张三=A0001张三
  2. 张三=A0007张三
复制代码
实现了精确匹配,具体其它问题(如想要模糊匹配),大家有想法的自己研究吧。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2