[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 5i365 于 2021-12-18 20:39 编辑

回复 6# qixiaobin0715


    能用ps实现下吗? 楼上那位朋友的代码, 我看不太明白,

在我印象中, 一堆的CMD代码, 用ps来实现, 几行就搞定了, 而且有的示例代码,理解起来不太吃力

另外, 能实现随机均分吗? 现在分过去的文件夹名字是升序的 例如 a b c d

我用这个主要是想给学生随机分卷了, 以前是手动拖, 感觉批处理还是快点

TOP

本帖最后由 qixiaobin0715 于 2021-12-18 20:55 编辑

批处理也能干这事:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /d %%a in (2\*) do (
  4.     set /a x+=1
  5.     set #!x!=%%a
  6. )
  7. for /d %%b in (1\*) do set /a y+=1
  8. set /a n=y/x
  9. set /a m=y%%x
  10. if !m! neq 0 set /a n+=1
  11. for /d %%c in (1\*) do (
  12.     set /a k+=1
  13.     set /a l=(k-1^)/n+1
  14.     for %%d in (#!l!) do (
  15.         if not exist "!%%d!\%%~nxc" (
  16.             md "!%%d!\%%~nxc"
  17.             xcopy "%%c\*.*" "!%%d!\%%~nxc\" /s>nul
  18.         )
  19.     )
  20. )
  21. pause
复制代码
1

评分人数

    • 5i365: CMD实现方式,牛技术 + 1

TOP

回复 3# for_flr


    你好, 请问怎样实现把1文件中的那些文件随机均分到第2个文件夹中?  类似像我这样的问题, 搜索不到相关示例

TOP

本帖最后由 5i365 于 2021-12-18 20:03 编辑

回复 3# for_flr


    感谢大侠帮忙, 我把whatif删除了, 然后用下面的代码拷到.bat文件中, 能执行, 但是没有将文件拷到对应的文件夹中, 而是在桌面上新建了 A 和B 两个文件夹, 里面也缺少某个文件夹, 另外其子文件夹里的内容也没过去
示例文件打包下载:
https://wss1.cn/f/75c90piydb4 复制链接到浏览器打开
  1. #@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
  2. $d1="C:\Users\Administrator\Desktop\1"
  3. $d2="C:\Users\Administrator\Desktop\2"
  4. $dir1=Get-ChildItem $d1|Where-Object{$_.PSIsContainer -eq $true}
  5. $dir2=Get-ChildItem $d2|Where-Object{$_.PSIsContainer -eq $true}
  6. $num=$dir1.Count / $dir2.Count
  7. $num=[math]::Truncate($num)
  8. $mod=$dir1.Count % $dir2.Count
  9. $begin=0
  10. $end=$num
  11. $begin2=0
  12. $end2=$num-1
  13. for ($a=0;$a -lt $dir2.Count;$a++){
  14. if ($a -lt $mod){
  15.   Copy-Item $dir1[$begin..$end].fullname $dir2[$a]
  16.   $begin+=$num+1
  17.   $end+=$num+1
  18.   $begin2=$begin
  19.   $end2=$begin2+$num-1
  20.   
  21. }else{
  22.   Copy-Item $dir1[$begin2..$end2].fullname $dir2[$a]
  23.   $begin2+=$num
  24.   $end2+=$num
  25. }
  26. }
复制代码

TOP

powershell太吃力了,这个问题用批处理简单一些。

TOP

本帖最后由 for_flr 于 2021-12-17 17:38 编辑
  1. $d1="C:\Users\lenovo\Desktop\1"
  2. $d2="C:\Users\lenovo\Desktop\2"
  3. $dir1=Get-ChildItem $d1|Where-Object{$_.PSIsContainer -eq $true}
  4. $dir2=Get-ChildItem $d2|Where-Object{$_.PSIsContainer -eq $true}
  5. $num=$dir1.Count / $dir2.Count
  6. $num=[math]::Truncate($num)
  7. $mod=$dir1.Count % $dir2.Count
  8. $begin=0
  9. $end=$num
  10. $begin2=0
  11. $end2=$num-1
  12. for ($a=0;$a -lt $dir2.Count;$a++){
  13. if ($a -lt $mod){
  14.   Copy-Item $dir1[$begin..$end].fullname $dir2[$a] -WhatIf
  15.   $begin+=$num+1
  16.   $end+=$num+1
  17.   $begin2=$begin
  18.   $end2=$begin2+$num-1
  19.   
  20. }else{
  21.   Copy-Item $dir1[$begin2..$end2].fullname $dir2[$a] -WhatIf
  22.   $begin2+=$num
  23.   $end2+=$num
  24. }
  25. }
复制代码
powershell,测试没问题的话,就把-whatif 删掉

TOP

返回列表