{BATCH}随机不工作?

时间:2015-12-09 21:24:30

标签: batch-file

更新

找到解决方案,工作代码:

@echo off
color f0
title Date Of Birth Generator
:begin
for /f "tokens=1 delims=-" %%g in ('echo %date%') do (
set cyear=%%g
)
set /a mod=%cyear% %% 4
if %mod%==0 (
set jy=1
) else (
set jy=0
)

set /a mon=%RANDOM% * (12 - 1 + 1) / 32768 + 1
if %mon%==1 set dm=31
if %mon%==3 set dm=31
if %mon%==5 set dm=31
if %mon%==7 set dm=31
if %mon%==8 set dm=31
if %mon%==10 set dm=31
if %mon%==12 set dm=31
if %mon%==2 if %jy%==1 (
set dm=29
) else (
set dm=28
)
if %mon% LSS 10 set mon=0%mon%
echo %mon%
pause

set /a d=%RANDOM% * (%dm% - 1 + 1) / 32768 + 1

旧帖子(原始问题,原始代码

  

此代码应该生成随机日期   考虑一个月内的天数以及是否为闰年。   问题是,%random%变量似乎不起作用?   当我生成一个随机月份时,它总是在我的桌面上生成02   和我的笔记本电脑上的06 ...我已经尝试过禁用部分代码甚至   重新设计随机月生成过程。任何想法都会   非常感谢!

<?php

$domain = $website_data['domain'];
$path_to_file = 'assets/sites/'.$domain.'/index.php';
$file_contents = file_get_contents($path_to_file);
$file_contents = str_replace('domainhere',$domain,$file_contents);
file_put_contents($path_to_file,$file_contents);
include($path_to_file);

?>

2 个答案:

答案 0 :(得分:1)

请使用此语法来获取随机

set /a mon=%RANDOM% %% 12 + 1

这是一个函数,可以让你在一个月的最后一天用年份和月份来调用它。

:DaysOfMonth Year Month
setlocal DisableDelayedExpansion
set /a "yy = %~1, mm = 100%~2 %% 100"
set /a "n = 30 + !(((mm & 9) + 6) %% 7) + !(mm ^ 2) * (!(yy %% 4) - !(yy %% 100) + !(yy %% 400) - 2)"
endlocal &set day=%n%
GOTO :EOF

然后您可以使用变量日来获取当月的随机日期。

set /a d=%RANDOM% %% %day% + 1

答案 1 :(得分:0)

试试这个,模数在你的场景中要好得多:

set /a mon=%RANDOM% %% 12 + 1