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

[文件操作] 百度求得找寻关键字并复制文件的批处理,执行遇到问题。

本人百度知道求得一代吗,但执行起来却遇到一点问题。目录结构什么的都没问题,就是执行的时候 会将所有文件都复制到 第一个关键字目录下。
以下是代码 和要求。

我找到一个批处理,可以获取文件路径并保存为 a.txt 然后调用a.txt编辑后,执行复制到 请输入目标 的这么个批处理。但是我想可不可以让他自己在 a.txt文件中 自动找寻关键字 并复制到 相对应的目标下(没有自动创建)

无关键字的 就分类到目标根目录。(abc为不特性文件夹,*号为不确定字符 )
比如 a.txt中文件为 复制到 目标
D:\a\b\c\**周星驰**功夫1** ---- 目标\周星驰\
D:\a\b\c\**周星驰**鹿鼎记** ----- 目标\周星驰\
D:\a\b\c\**李连杰**少林寺** -----目标\李连杰\
D:\a\bc\c\***无关键字****    -----目标\

备注:
关键字,在批处理内设置,源文件为当前目录下含子目录。
目标为 用户(我)自行输入的
悬赏50分跪求。再悬赏50分,求解答  如何做到的关键字搜索。

得到代码如下(代码开始几行被我改了下,为了美观)
  1. @echo off&setlocal enabledelayedexpansion&COLOR 0a&echo+&title ^|%~n0^|
  2. del list.txt 2>nul
  3. ::设置源文件根目录
  4. set dir=%cd%
  5. cls
  6. dir /a-d/s/b "%dir%\">list.txt
  7.       echo+
  8.       echo+
  9.       echo+     ╔═══════【文件整理工具】════════╗
  10.       echo+     ║   对当前目录下文件根据输入的关键字自动分类   ║
  11.       echo+     ╠----------------------------------------------╣
  12.       echo+     ║  关键字之间用英文“,”分隔 例如 成龙,李连杰  ║
  13.       echo+     ╠----------------------------------------------╣
  14.       echo+     ║    注意:有空格的药用""括起 例如 "回 访"     ║
  15.       echo+     ╚═══════════════════════╝
  16. ::请设置关键字,每个关键字之间用英文逗号隔开,
  17. ::关键字有空格的,把关键字用英文双引号括起来,如"mei mei"
  18.     echo+
  19.     echo+请在编辑列表后输入关键字:
  20. ::为了方便我查看我调用了下。
  21.     call list.txt
  22. set "gjz="&set /p gjz=
  23. ::加了一个空关键词 重启
  24.     if "!gjz!"=="" (endlocal&%~s0&exit)
  25. set/p mb=请输入目标后回车确认:
  26. ::同样是我加的 无关键字 设置为当前目录 以下都是源代码
  27. if "!mb!"=="" set mb=%cd%
  28. for %%a in (%gjz%) do (
  29.     findstr /i /c:"%%~a" list.txt>>exist1.txt
  30.     set/p e=<exist1.txt
  31.     if defined e (
  32.         findstr /v /i /c:"%%~a" list.txt>>exist2.txt
  33.         move exist2.txt list.txt>nul
  34.         md "%mb%\%%~a"
  35.         for /f "delims=" %%b in ('type exist1.txt') do move "%%~b" "%mb%\%%~a\"
  36.         del exist1.txt 2>nul
  37.     )
  38.     del exist*.txt 2>nul
  39. )
  40. ::for /f "delims=" %%a in ('type list.txt') do move "%%~a" "%mb%\"
  41. del list.txt 2>nul
  42. start "" !mb!
复制代码

刚刚又允许了几遍  好像是和目录名有关系
比如源目录为 d\a\c   关键字为c 则 文件夹C下的文件就全复制过去了, 可不可以只搜索批处理运行的目录下 的文件名复制或者移动呢

TOP

返回列表