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

[文本处理] 批处理随机复制txt到多个子目录?

[复制链接]
发表于 2023-11-5 22:54:15 | 显示全部楼层 |阅读模式
D:\TXT文件夹 里面有多个txt文件夹
E\123文件夹 下面有多个子文件夹

如何随机复制"D:\TXT文件夹" 里面的"1"个txt文件 到"E\123文件夹"下面的子文件夹内。

就是随机复制1个到"E\123文件夹\A文件夹"
再随机复制1个到"E\123文件夹\B文件夹"
....

地址是固定的,文件名和文件夹名不固定~
发表于 2023-11-5 23:45:38 | 显示全部楼层
  1. <# :
  2. @echo off
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
  4. pause
  5. #>
  6. $txt=dir D:\TXT文件夹\*.txt -File
  7. dir E:\123文件夹\ -Directory|%{$randtxt=$txt|Get-Random -Count 1;copy $randtxt $_.FullName}
复制代码
 楼主| 发表于 2023-11-6 01:02:12 | 显示全部楼层
回复 2# pd1


    大佬能写成bat命令吗?
发表于 2023-11-6 06:28:54 | 显示全部楼层
来个超低效率的
请确认确实是1楼所说的
D:\TXT文件夹 里面有多个txt文件夹
不过 不是文件夹 而是 文件也行

  1. @echo off&pause

  2. set "f=D:\TXT文件夹"
  3. set "fd=E\123文件夹"

  4. for /r "%f%" %%a in ("*.txt") do set /a n+=1

  5. for /d %%a in ("%fd%\*") do (
  6. set folder=%%a
  7. call :aaa
  8. )

  9. echo,&pause&exit /b

  10. :aaa
  11. set /a r=%random% %% %n%+1
  12. set m=0
  13. for /r "%f%" %%b in ("*.txt") do (
  14. set file=%%b
  15. set /a m+=1
  16. setlocal enabledelayedexpansion
  17. if !m! == !r! (
  18. rem echo,!r!
  19. echo,&echo copy "!file!" to "!folder!"
  20. copy /y "!file!" "!folder!"
  21. endlocal
  22. goto :eof
  23. )
  24. endlocal
  25. )
复制代码
发表于 2023-11-6 07:43:36 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. set "f=D:\txt文件夹"
  3. set "fd=E:\123文件夹"
  4. for /f "delims=" %%f in ('dir /b /a-d "%f%\*.txt"') do set /a n+=1&set "_!n!=%%~f"
  5. for /f "delims=" %%d in ('dir /b /ad "%fd%"') do (
  6.      set /a r=!random!%%n+1
  7.      for %%b in (!r!) do copy "%f%\!_%%b!" "%fd%%%d"
  8. )
  9. pause
复制代码
 楼主| 发表于 2023-11-6 09:08:10 | 显示全部楼层
回复 4# Five66


    谢谢大佬
 楼主| 发表于 2023-11-6 09:08:23 | 显示全部楼层
回复 5# terse


    感谢大佬,万分感谢!
发表于 2023-11-6 09:55:50 | 显示全部楼层
  1. @echo off
  2. set "f1=D:\TXT"
  3. set "f2=E:\123"
  4. for %%a in ("%f1%\*.txt") do (
  5.         set /a n+=1
  6.         call set _%%random%%_%%n%%=%%a
  7. )
  8. for /d %%d in ("%f2%\*") do (
  9.         call :1 "%%d"
  10. )
  11. pause & exit

  12.         :1
  13.         for /f "tokens=1* delims==" %%a in ('2^>nul set _') do (
  14.                 copy "%%b" "%~1"
  15.                 set %%a=
  16.                 exit /b
  17.         )
  18.         exit /b
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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