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

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

[复制链接]
 楼主| 发表于 2023-6-19 12:08:22 | 显示全部楼层
回复 15# czjt1234
是的,我的1.txt 和这个批处理都在一个文件夹下就是test1 下面
发表于 2023-6-19 15:16:17 | 显示全部楼层
回复 17# feiyan


    1.txt和批处理文件是不是都是ANSI编码
 楼主| 发表于 2023-6-19 20:58:00 | 显示全部楼层
回复 17# czjt1234


    1.txt  不是的
 楼主| 发表于 2023-6-19 21:05:26 | 显示全部楼层
回复 9# 77七
感谢,今天测试成功了。,我把1. txt  也设置了ansi  格式。非常感谢。
 楼主| 发表于 2023-6-19 21:05:58 | 显示全部楼层
回复 10# yakeyun
感谢,今天测试成功了。,我把1. txt  也设置了ansi  格式。非常感谢。
 楼主| 发表于 2023-6-19 21:06:42 | 显示全部楼层
回复 11# qixiaobin0715

感谢,今天测试成功了。,我把1. txt  也设置了ansi  格式。就可把程序跑起来了,非常感谢。
 楼主| 发表于 2023-9-25 20:51:55 | 显示全部楼层
回复 11# qixiaobin0715
楼主,我在实际工作中发现我的路径和文件名都是空格的,但是只要是有空格的文件名就无法复制到指定文件夹下,能帮忙更新这个批处理吗?谢谢  ps, 我在1.txt 中,把文件名用双引号引起来,发现没有效果。
 楼主| 发表于 2023-9-25 20:52:54 | 显示全部楼层
回复 9# 77七
楼主,我在实际工作中发现我的路径和文件名都是有空格的,但是只要是有空格的文件名就无法复制到指定文件夹下,能帮忙更新这个批处理吗?谢谢  ps, 我在1.txt 中,把文件名用双引号引起来,发现没有效果。
发表于 2023-9-25 22:16:11 | 显示全部楼层
回复 23# 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 "delims=" %%a in ('type "1.txt"') do (
  6.         setlocal enabledelayedexpansion
  7.         for %%b in (%%a) do (
  8.                 if defined folder (
  9.                         if exist "D:\文件数据库\%%~b" (
  10.                                 copy "D:\文件数据库\%%~b" "!folder!"
  11.                         ) else (
  12.                                 >>log.txt echo %%~b
  13.                         )
  14.                 ) else (
  15.                         set "folder=%%~b"
  16.                         md "!folder!"
  17.                 )
  18.         )
  19.         endlocal
  20. )
  21. pause
复制代码
发表于 2023-9-26 10:01:54 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2023-9-26 10:51 编辑

回复 22# feiyan
实际上你才是楼主。
你可以把实际运行错误的几种情况发上来看看:比如路径有空格;文件名有空格...等等。
清单上的分隔符应当统一,如果列出的文件夹名或文件名中存在空格,那么文件夹名或文件名之间的分隔就不能再使用空格分隔了,这样会造成逻辑上的混乱。
清单内的具体格式可以使用24楼中的引号分隔方式为最优。
 楼主| 发表于 2023-9-26 20:05:24 | 显示全部楼层
回复 24# 77七 非常感谢,运行成功了。
 楼主| 发表于 2023-9-26 20:06:46 | 显示全部楼层
回复 25# qixiaobin0715
受教了
 楼主| 发表于 2023-9-27 19:58:27 | 显示全部楼层
各位老师,对于1.txt 中包含的文件名,如果我想偷懒,用1*.pdf,  2*pdf  来代替实际文件名,发现程序就没法复制数据库里面的文件了。这个有办法解决吗?
发表于 2023-9-27 22:23:52 | 显示全部楼层
回复 28# 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.         md "%%a" 2>nul
  7.         set "folder=%%a"
  8.         call :1 "%%b"
  9. )
  10. pause & exit

  11.         :1
  12.         for /f "tokens=1* delims=|" %%x in ("%~1") do (
  13.                 if exist "D:\文件数据库\%%x" (
  14.                         copy "D:\文件数据库\%%x" "%folder%"
  15.                 ) else (
  16.                         >>log.txt echo %%x
  17.                 )
  18.                 if "%%y" neq "" (
  19.                         call :1 "%%y"
  20.                 ) else (
  21.                         exit /b
  22.                 )
  23.         )
复制代码
 楼主| 发表于 2023-9-28 18:03:56 | 显示全部楼层
回复 29# 77七 好像不成功,没有文件夹被创建出来,而且系统也没有报错,就提示了一句,请按任意键继续
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 12:02 , Processed in 0.019970 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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