标题: [文件操作] 为何批处理中%random%每次产生的随机数字每次都一样? [打印本页]
作者: ioripalm 时间: 2012-7-19 13:53 标题: 为何批处理中%random%每次产生的随机数字每次都一样?
全部代码在下面,经过测试发现,%random%产生的随机数每次都一样(关闭Cmd后再开就更新一个新数),导致不能重命名,高手帮我看看哪里出了问题!- @echo off&setlocal enabledelayedexpansion
- echo ------------------------------------------------------
- echo 保存今天打印机的缓存文件并根据内容的第一个词改名
- echo ------------------------------------------------------
- ::建立今天日期文件夹
- set /a today=%date:~0,4%%date:~5,2%%date:~8,2%
- if not exist %today% md %today%
- ::将今天的打印机缓存文件备份到日期文件夹下
- xcopy /D:%date:~5,2%-%date:~8,2%-%date:~0,4% C:\WINDOWS\system32\spool\PRINTERS\*.SPL %today%\
- md temp
- ::遍历所有SPL文件
- for /r "%today%\" %%i in (*.SPL) do (
- ::复制一个SPL到临时文件夹下
- copy /y %%i temp\aaaaa.SPL
- ::对于开头有空行的文档将去除空行的aaaaa.SPL输出到bbbbb.SPL
- for /f "delims=" %%i in (temp\aaaaa.SPL) do >>temp\bbbbb.SPL echo %%i
- ::得到bbbbb.SPL的第一行内容,输出到temp.txt
- 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
- ::将temp.txt的内容取第一个字符串,并改名aaaaa.SPL为这个字符串
- for /f "usebackq delims= " %%k in (temp.txt) do (
- ::如果有重名就在后面加一个随机数
- if exist temp\%%k.SPL (ren temp\aaaaa.SPL %%k%RANDOM%.SPL) else (ren temp\aaaaa.SPL %%k.SPL)
- )
- del /q temp\bbbbb.SPL
- del /q temp.txt
- )
- pause
复制代码
作者: Seder 时间: 2012-7-19 13:59
用!random!试试
作者: ioripalm 时间: 2012-7-20 15:34
回复 2# Seder
用!random!的确可以了 但是又出现新问题 就是有一部分在执行的时候显示存在相同文件不能重命名
作者: cjiabing 时间: 2012-7-20 16:17
那就再随机,直到没有重复的~
作者: ioripalm 时间: 2012-7-23 12:57
回复 4# cjiabing
用%random%的话,每次都是一个相同的数字.导致第一次重命名成功,但是第二次就失败了!
用!random!可以重命名,会产生不同的数字,但是测试中发现,有30%的几率会导致某些文件重命名失败,每次都是那几个文件,仔细分析文件,没有发现什么不同的地方!困惑不已啊!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |