Board logo

标题: [文件操作] [已解决]批处理根据txt名单,文件夹归类jpg,并输出找不到的名单 [打印本页]

作者: lzg8782000    时间: 2014-10-21 14:22     标题: [已解决]批处理根据txt名单,文件夹归类jpg,并输出找不到的名单

我想要实现,运行BAT后,bat会根据A班.txt B班.txt 等等等 创建对应的文件夹,然后还会根据txt 里面的内容,将对应文件名的jpg文件放到对应的文件夹里面。
例如A班内容是:
12
13
17
B班内容是:
14
15
运行后,会自动创建A班,B班两个文件夹,然后,将12.jpg 13.jpg 放入A班文件夹,14.jpg 15.jpg放入B班文件夹,因为找不到17,还会自动生产A班找不到的名单.txt,里面的内容是17.

下面是我网上找到的批量剪切文件到对应指定文件夹的。可以从这改进一下。谢谢哦
  1. @echo off&setlocal EnableDelayedExpansion
  2. for /f "delims=" %%i in (mingdan.txt) do (
  3. set a=%%i
  4. echo !a!
  5. xcopy /y !a!.jpg A班 >nul
  6. del /q !a!.jpg
  7. )
  8. pause
复制代码

作者: 522235677    时间: 2014-10-21 15:23

怎么知道要把哪些文件放到各个班呢?
作者: lzg8782000    时间: 2014-10-21 16:17

回复 2# 522235677
A.txt B.tx这些的名单,本来就有的,不需要理这个,只需要根据名单,分类放进去就行了
作者: 522235677    时间: 2014-10-21 18:16

回复 3# lzg8782000


    名单在 A.txt B.txt 里吗
作者: lzg8782000    时间: 2014-10-22 11:54

回复 4# 522235677

A班.txt:
12
13
17
B班.txt:
14
15

名单都在txt里面,这些都是已知的。
作者: Batcher    时间: 2014-10-22 12:43

  1. @echo off
  2. for %%i in (*.txt) do (
  3.     if not exist "%%~ni\" (
  4.         md "%%~ni"
  5.     )
  6.     for /f "usebackq delims=" %%j in ("%%i") do (
  7.         if exist "%%j.jpg" (
  8.             move /y "%%j.jpg" "%%~ni\"
  9.         ) else (
  10.             >>"%%~ni找不到的名单.txt" echo,%%j
  11.         )
  12.     )
  13. )
复制代码

作者: Linuxer    时间: 2014-10-22 13:04

本帖最后由 Linuxer 于 2014-10-22 13:21 编辑

回复 6# Batcher


    看到你的代码很精简~赞一个~我写了一个思路稍微古板点的。。。
  1. @echo off&setlocal EnableDelayedExpansion
  2. for /f "tokens=1 delims=." %%i in ('dir /b^|findstr "*班"') do (
  3. if not exist %%i md %%i
  4. )
  5. for /f "delims=" %%x in (A班.txt) do (
  6. set a=%%x
  7. echo !a!
  8. if exist !a!.jpg xcopy /y !a!.jpg A班>nul
  9. if exist !a!.jpg del /q !a!.jpg
  10. )
  11. for /f "delims=" %%y in (B班.txt) do (
  12. set b=%%y
  13. echo !b!
  14. if exist !b!.jpg xcopy /y !b!.jpg B班>nul
  15. if exist !b!.jpg del /q !b!.jpg
  16. )
  17. dir /b *.jpg > 未找到班级的名单.txt
  18. pause
复制代码

作者: lzg8782000    时间: 2014-10-28 13:55

回复 7# Linuxer


    试了一下,你这个貌似有点问题哦,停着,不动了。而且貌似只能A班、B班。
作者: Linuxer    时间: 2014-10-29 10:07

回复 8# lzg8782000


    嗯,有局限性,如果要加班级,需要手动添加(类似于A班、B班的代码)




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