Board logo

标题: [文本处理] 批处理随机复制txt到多个子目录? [打印本页]

作者: 小白来了    时间: 2023-11-5 22:54     标题: 批处理随机复制txt到多个子目录?

D:\TXT文件夹 里面有多个txt文件夹
E\123文件夹 下面有多个子文件夹

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

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

地址是固定的,文件名和文件夹名不固定~
作者: pd1    时间: 2023-11-5 23:45

  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

回复 2# pd1


    大佬能写成bat命令吗?
作者: Five66    时间: 2023-11-6 06:28

来个超低效率的
请确认确实是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. )
复制代码

作者: terse    时间: 2023-11-6 07:43

  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

回复 4# Five66


    谢谢大佬
作者: 小白来了    时间: 2023-11-6 09:08

回复 5# terse


    感谢大佬,万分感谢!
作者: 77七    时间: 2023-11-6 09:55

  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
复制代码





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