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

[文件操作] 为何批处理中%random%每次产生的随机数字每次都一样?

[复制链接]
发表于 2012-7-19 13:53:49 | 显示全部楼层 |阅读模式
全部代码在下面,经过测试发现,%random%产生的随机数每次都一样(关闭Cmd后再开就更新一个新数),导致不能重命名,高手帮我看看哪里出了问题!
  1. @echo off&setlocal enabledelayedexpansion
  2. echo ------------------------------------------------------
  3. echo 保存今天打印机的缓存文件并根据内容的第一个词改名
  4. echo ------------------------------------------------------
  5. ::建立今天日期文件夹
  6. set /a today=%date:~0,4%%date:~5,2%%date:~8,2%
  7. if not exist %today% md %today%
  8. ::将今天的打印机缓存文件备份到日期文件夹下
  9. xcopy /D:%date:~5,2%-%date:~8,2%-%date:~0,4% C:\WINDOWS\system32\spool\PRINTERS\*.SPL %today%\
  10. md temp
  11. ::遍历所有SPL文件
  12. for /r "%today%" %%i in (*.SPL) do (
  13. ::复制一个SPL到临时文件夹下
  14. copy /y %%i temp\aaaaa.SPL
  15. ::对于开头有空行的文档将去除空行的aaaaa.SPL输出到bbbbb.SPL
  16. for /f "delims=" %%i in (temp\aaaaa.SPL) do >>temp\bbbbb.SPL echo %%i
  17. ::得到bbbbb.SPL的第一行内容,输出到temp.txt
  18. for /f "tokens=1* delims=:" %%i in ('findstr/n . temp\bbbbb.SPL') do if %%i geq 1 if %%i leq 1 echo %%j>>temp.txt
  19. ::将temp.txt的内容取第一个字符串,并改名aaaaa.SPL为这个字符串
  20. for /f "usebackq delims= " %%k in (temp.txt) do (
  21. ::如果有重名就在后面加一个随机数
  22. if exist temp\%%k.SPL (ren temp\aaaaa.SPL %%k%RANDOM%.SPL) else (ren temp\aaaaa.SPL %%k.SPL)
  23. )
  24. del /q temp\bbbbb.SPL
  25. del /q temp.txt
  26. )
  27. pause
复制代码
发表于 2012-7-19 13:59:52 | 显示全部楼层
用!random!试试
 楼主| 发表于 2012-7-20 15:34:52 | 显示全部楼层
回复 2# Seder


    用!random!的确可以了 但是又出现新问题 就是有一部分在执行的时候显示存在相同文件不能重命名
发表于 2012-7-20 16:17:23 | 显示全部楼层
那就再随机,直到没有重复的~
 楼主| 发表于 2012-7-23 12:57:47 | 显示全部楼层
回复 4# cjiabing


    用%random%的话,每次都是一个相同的数字.导致第一次重命名成功,但是第二次就失败了!
    用!random!可以重命名,会产生不同的数字,但是测试中发现,有30%的几率会导致某些文件重命名失败,每次都是那几个文件,仔细分析文件,没有发现什么不同的地方!困惑不已啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 11:25 , Processed in 0.017823 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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