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

[文件操作] [已解决]求助批处理根据清单创建文件夹并复制文件

[复制链接]
发表于 2023-9-28 18:43:21 | 显示全部楼层
回复 30# feiyan


   
我刚测试了一下,代码正常,1.txt是否是代码中要求的格式?
  1. a|1.pdf|2*.pdf
复制代码
发表于 2023-9-28 19:07:17 | 显示全部楼层
回复 31# 77七


    大佬在吗?看一下我的最新帖吧~求助您
 楼主| 发表于 2023-9-29 14:01:51 | 显示全部楼层
回复 31# 77七
这个我试了下,不知道为什么,就是1.txt 里面,如果我的文件夹和文件名多一些,第二个文件夹和之后文件夹就没有显示。当我只是个文件夹和单个文件就没有这个问题。
举例:
A|1*|2*|3*|
B|1*|2*|
C|3*|*00*|
这样也不行
A|1*||2*||3*|
B|1*||2*|
C|3*||*00*|
下面这这个模式没问题
A|1*|
B|1*|
C|3*|
发表于 2023-9-29 15:03:36 | 显示全部楼层
回复 33# feiyan


  
  1. A|1*|2*|3*|
复制代码
尽量不要修改格式,虽然这样也没错,就怕把代码也随意改了,格式中包括含有空格的文件名等等,不需要加引号了。
上一个代码,我用你的格式,测试也没发现问题,
可以试试点击上一个代码的 copy 按钮 复制代码,不要选中复制。
或者试试以下的
  1. @echo off
  2. rem 文本格式 a|1.pdf|2*.pdf
  3. rem 批处理保存为ansi编码格式
  4. cd /d "C:\Users\Administrator\Desktop\test1"
  5. for /f "tokens=1* delims=|" %%a in ('type "1.txt"') do (
  6.         echo 创建文件夹 "%%a"
  7.         md "%%a" 2>nul
  8.         set "folder=%%a"
  9.         set "str="
  10.         call :1 "%%b"
  11.         echo=
  12. )
  13. pause & exit

  14.         :1
  15.         if not defined str (
  16.                 set "str=%~1"
  17.         )
  18.         for /f "tokens=1* delims=|" %%x in ("%str%") do (
  19.                 echo 查找文件 "%%x"
  20.                 if exist "D:\文件数据库\%%x" (
  21.                         copy "D:\文件数据库\%%x" "%folder%"
  22.                 ) else (
  23.                         >>log.txt echo %%x
  24.                 )
  25.                 if "%%y" neq "" (
  26.                         set "str=%%y"
  27.                         goto :1
  28.                 ) else (
  29.                         exit /b
  30.                 )
  31.         )
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2023-9-29 16:02:41 | 显示全部楼层
回复 34# 77七 这个程序完美
 楼主| 发表于 2023-9-29 16:06:16 | 显示全部楼层
回复 34# 77七 hi 77,非常感谢,想你喝杯咖啡,给我个支付宝的二维码吧。
发表于 2023-9-29 16:24:20 | 显示全部楼层
回复 36# feiyan




谢谢!请以你的名义捐助到论坛吧!
http://bbs.bathome.net/thread-10403-1-1.html
 楼主| 发表于 2023-9-29 19:28:52 | 显示全部楼层
回复 37# 77七 如君所愿,已经向论坛捐助50元。祝77中秋快乐。
 楼主| 发表于 2023-9-30 18:39:36 | 显示全部楼层
回复 34# 77七 七七,能帮忙把添加个功能,希望能遍历查找D:文件数据库的多层子文件夹,因为有些文件在子文件夹或孙文件夹内。文件夹可能有好几层的。
发表于 2023-9-30 19:56:02 | 显示全部楼层
回复 39# feiyan


  
  1. @echo off
  2. rem 文本格式 a|1.pdf|2*.pdf
  3. rem 批处理保存为ansi编码格式
  4. cd /d "C:\Users\Administrator\Desktop\test1"
  5. for /f "tokens=1* delims=|" %%a in ('type "1.txt"') do (
  6.         echo 创建文件夹 "%%a"
  7.         md "%%a" 2>nul
  8.         set "folder=%%a"
  9.         set "str="
  10.         call :1 "%%b"
  11.         echo=
  12. )
  13. pause & exit

  14.         :1
  15.         if not defined str (
  16.                 set "str=%~1"
  17.         )
  18.         for /f "tokens=1* delims=|" %%x in ("%str%") do (
  19.                 echo 查找文件 "%%x"
  20.                 (for /f "delims=" %%i in ('dir /b /s /a-d "d:\文件数据库\%%x" 2^>nul') do (
  21.                         copy "%%i" "%folder%"
  22.                 )) || (
  23.                         >>log.txt echo %%x
  24.                 )
  25.                 if "%%y" neq "" (
  26.                         set "str=%%y"
  27.                         goto :1
  28.                 ) else (
  29.                         exit /b
  30.                 )
  31.         )
复制代码
 楼主| 发表于 2023-9-30 20:44:56 | 显示全部楼层
回复 40# 77七 感谢,完美。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 11:55 , Processed in 0.019830 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表