代码之家  ›  专栏  ›  技术社区  ›  Clayton Lewis

使用八进制数08和09和schtasks

  •  0
  • Clayton Lewis  · 技术社区  · 6 年前

    我有一个我认为有效的剧本。随机决定尝试09个月,结果失败了。在08月也失败了。

    谷歌之类的东西告诉我这是因为 Octal Numbers 据我所知是8号底。

    我不知道如何最好地解决这个问题,我需要一点建议。

    此日期用于通过 SCHTASKS 需要2位数的月/日和4位数的年

    当本月使用08和09时,它一直循环回到开始。我想这也适用于今天。不确定其他数字也可能受到影响。

    :SETDATE
    CLS
    ECHO.
    ECHO Date must be 2 digit Month/Day and 4 digit Year
    ECHO.
    ECHO.
    SET /P SETMONTH=Enter 2 digit month for the restart (01-12):
    ECHO.
    SET /P SETDAY=Enter 2 digit day for the restart (01-31):
    ECHO.
    SET /P SETYEAR=Enter 4 digit year for the restart (2019-2025):
    
    IF %SETMONTH% LSS 1 GOTO SETDATE
    IF %SETMONTH% GTR 12 GOTO SETDATE
    IF %SETDAY% LSS 1 GOTO SETDATE
    IF %SETDAY% GTR 31 GOTO SETDATE
    IF %SETYEAR% LSS 2019 GOTO SETDATE
    IF %SETYEAR% GTR 2025 GOTO SETDATE
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   Clayton Lewis    6 年前

    我想我会发布一个似乎能满足我需要的解决方案。它并没有考虑到所有可能的输入,但它确实解决了08和09的问题。如果有前导0,它将删除,然后处理正常。

    :SETDATE
    CLS
    ECHO.
    ECHO Date must be 2 digit Month/Day and 4 digit Year
    ECHO.
    ECHO.
    SET /P SETMONTH=Enter 2 digit month (01-12):
    ECHO.
    SET /P SETDAY=Enter 2 digit day (01-31):
    ECHO.
    SET /P SETYEAR=Enter 4 digit year (2019-2025):
    
    IF %SETMONTH% == 0 (
        SET NEWMONTH=0
    ) ELSE (
        IF "%SETMONTH:~0,1%" == "0" (
            SET NEWMONTH=%SETMONTH:~1%    
        ) ELSE (
            SET NEWMONTH=%SETMONTH%
        )    
    )
    IF %SETDAY% == 0 (
        SET NEWDAY=0
    ) ELSE (
        IF "%SETDAY:~0,1%" == "0" (
            SET NEWDAY=%SETDAY:~1%    
        ) ELSE (
            SET NEWDAY=%SETDAY%
        )    
    )
    IF %SETYEAR% == 0 (
        SET NEWYEAR=0
    ) ELSE (
        IF "%SETYEAR:~0,1%" == "0" (
            SET NEWYEAR=%SETYEAR:~1%    
        ) ELSE (
            SET NEWYEAR=%SETYEAR%
        )    
    )
    
    IF %NEWMONTH% LSS 1 GOTO SETDATE
    IF %NEWMONTH% GTR 12 GOTO SETDATE
    IF %NEWDAY% LSS 1 GOTO SETDATE
    IF %NEWDAY% GTR 31 GOTO SETDATE
    IF %NEWYEAR% LSS 2019 GOTO SETDATE
    IF %NEWYEAR% GTR 2025 GOTO SETDATE
    
        2
  •  0
  •   Compo    6 年前

    虽然从技术上讲,这不是你想要的答案,但我已经决定把它作为一个想法添加进去。

    这是一个独立的批处理文件,旨在提供一个供最终用户选择的gui日历。它使用powershell,据我所知,它应该与windows 7(即powershell 2.0)一起使用。

    <# :DSel
    @Echo Off
    Set "_="&For /F Delims^=^ EOL^= %%A In ('PowerShell -NoP -C^
     "IEx([IO.File]::ReadAllText('%~f0'))"') Do Set "_=%%A"
    If Not Defined _ GoTo DSel
    Echo You selected %_%
    Pause
    Exit /B
    #>
    Add-Type -AssemblyName System.Windows.Forms
    Add-Type -AssemblyName System.Drawing
    
    $form = New-Object Windows.Forms.Form
    
    $form.Text = 'Select a date'
    $form.Size = New-Object Drawing.Size @(243,230)
    $form.StartPosition = 'CenterScreen'
    
    $calendar = New-Object System.Windows.Forms.MonthCalendar
    $calendar.ShowTodayCircle = $false
    $calendar.MaxDate = ((Get-Date).AddYears(5)).AddDays(-1)
    $calendar.MinDate = Get-Date
    $calendar.MaxSelectionCount = 1
    $form.Controls.Add($calendar)
    
    $OKButton = New-Object System.Windows.Forms.Button
    $OKButton.Location = New-Object System.Drawing.Point(38,165)
    $OKButton.Size = New-Object System.Drawing.Size(75,23)
    $OKButton.Text = 'OK'
    $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
    $form.AcceptButton = $OKButton
    $form.Controls.Add($OKButton)
    
    $CancelButton = New-Object System.Windows.Forms.Button
    $CancelButton.Location = New-Object System.Drawing.Point(113,165)
    $CancelButton.Size = New-Object System.Drawing.Size(75,23)
    $CancelButton.Text = 'Today'
    $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
    $form.CancelButton = $CancelButton
    $form.Controls.Add($CancelButton)
    
    $form.ControlBox = $false
    $form.Topmost = $true
    
    $result = $form.ShowDialog()
    
    if ($result -eq [System.Windows.Forms.DialogResult]::OK)
    {
        $date = $calendar.SelectionStart
        Write-Host $($date.ToString('MM-dd-yyyy'))
    }
    

    正如你所建议的,你对powershell有一定的了解,你可以对powershell做任何必要的修改。