标题: [文件操作] [已解决]批处理如何根据别名(关键词、关键字)归档文件 [打印本页]
作者: 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次。- @echo off
- for /d /r "%gdwj%" %%a in ("*张三*") do explorer "%%a"
- for /d /r "%gdwj%" %%a in ("*") do (call :FILE "%%a" &popd &if defined # explorer "%%a" &set "#=")
- exit
- :FILE
- 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文件:- @ECHO OFF
-
- :: 按自己的需要修改路径 :::::
- SET gdwj=%USERPROFILE%\Desktop\Test
- SET conf=%gdwj%\test.ini
- :::::::::::::::::::::::::::::
-
- :Top
- SET TARGET=%1
- IF !%TARGET%! == !! GOTO :Done
- SHIFT
- FOR %%f IN (%TARGET%) DO SET FILE=%%~nf
- FOR /F "tokens=1,2 delims==" %%p IN (%conf%) DO (
- IF "%FILE%" == "%%p" (
- IF EXIST %gdwj%\*%%q* (
- FOR /D %%d IN (%gdwj%\*%%q*) DO (
- ECHO %%d
- START %%d
- timeout /t 3
- )
- )
- )
- )
- GOTO :Top
-
- :Done
复制代码
配置文件test.ini复制代码
实现了精确匹配,具体其它问题(如想要模糊匹配),大家有想法的自己研究吧。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |