Date 来自键盘的powershell日期

Date 来自键盘的powershell日期,date,powershell,formatting,numbers,Date,Powershell,Formatting,Numbers,我有一个脚本,可以将文件重命名为用户在键盘上输入的日期——它非常简单,只要求输入月份、日期和年份。只要用户输入两位数的值,它就可以正常工作。。。问题是,有时用户没有输入前导的0,然后整个过程就会崩溃。如何确保包含前导0? 到目前为止,我的情况如下: $BatchDay = $(read-host "Enter Day of Month") if ($BatchDay -eq ''){$BatchDay = Get-Date -format dd} $BatchMonth

我有一个脚本,可以将文件重命名为用户在键盘上输入的日期——它非常简单,只要求输入月份、日期和年份。只要用户输入两位数的值,它就可以正常工作。。。问题是,有时用户没有输入前导的0,然后整个过程就会崩溃。如何确保包含前导0? 到目前为止,我的情况如下:

    $BatchDay = $(read-host "Enter Day of Month")
    if ($BatchDay -eq ''){$BatchDay = Get-Date -format dd}
    $BatchMonth = $(read-host "Enter Month of Year")
    if ($BatchMonth -eq ''){$BatchMonth = Get-Date -format MM}
    $BatchYear = $(read-host "Enter Year")
    if ($BatchYear -eq ''){$BatchYear = Get-Date -format yy}
然后,它连接数字以生成文件名:

    $Filename = "Customer--$BatchMonth-$BatchDay-$BatchYear($BatchNum).txt"
如何强制变量为两位数,即使天数和月份只有一位数


谢谢

您只需创建文件名来格式化变量:

$a = ("{0:00}-{1:00}" -f 1,2)
给予

就你而言:

$Filename = ("Customer--{0:00}-{1:00}-{2:00}({3:00}).txt" -f $BatchMonth,$BatchDay,$BatchYear,$BatchNum)

您只需创建文件名来格式化变量:

$a = ("{0:00}-{1:00}" -f 1,2)
给予

就你而言:

$Filename = ("Customer--{0:00}-{1:00}-{2:00}({3:00}).txt" -f $BatchMonth,$BatchDay,$BatchYear,$BatchNum)
试试这个:

$Filename = 'Customer--{0:00}-{1:00}-{2:00}({3}).txt' -f $BatchMonth, $BatchDay, $BatchYear, $BatchNum
试试这个:

$Filename = 'Customer--{0:00}-{1:00}-{2:00}({3}).txt' -f $BatchMonth, $BatchDay, $BatchYear, $BatchNum

我再次讨论这个问题-现在我需要的不仅仅是文件名变量,因为日期用于另一个函数。发生的情况是,该日期成为查找替换的一部分,该替换在当月的前9天失败,因为用户将该日期输入为一位数的日期。。。我感谢你的帮助!所以使用相同的格式化技巧。类似于:$dateEntered='{0:00}'-f(读取主机'enterdate')的内容我正在重新讨论这个问题-现在我需要的不仅仅是文件名变量,因为日期在另一个函数中使用。发生的情况是,该日期成为查找替换的一部分,该替换在当月的前9天失败,因为用户将该日期输入为一位数的日期。。。我感谢你的帮助!所以使用相同的格式化技巧。类似于:$dateEntered='{0:00}'-f(读取主机“输入日期”)