【发布时间】:2013-02-07 12:18:50
【问题描述】:
我需要创建一个脚本批处理、PowerShell 或 VB 来将星期几添加到文件名中。
例如,有 4 个文件,都需要在星期一将 MON 附加到前面,在星期二附加 TUE,在星期三附加 WED,等等。
有人可以帮忙吗?
【问题讨论】:
标签: powershell batch-file vbscript dayofweek
我需要创建一个脚本批处理、PowerShell 或 VB 来将星期几添加到文件名中。
例如,有 4 个文件,都需要在星期一将 MON 附加到前面,在星期二附加 TUE,在星期三附加 WED,等等。
有人可以帮忙吗?
【问题讨论】:
标签: powershell batch-file vbscript dayofweek
$dow = (Get-Date -f ddd).ToUpper()
$fileName = "${dow}_your_file_name.txt "
THU_your_file_name.txt
【讨论】:
使用 VBScript Docs 或 Google 了解有关在以下方面使用的 Weekday() 和 WeekdayName() 函数的详细信息:
Today = Date()
DayNum = Weekday(Today)
DayName = WeekdayName(DayNum, True)
WScript.Echo UCase(DayName) & "_" & "somefile.txt"
THU_somefile.txt
PS: 从这里开始:Functions (VBScript)
【讨论】:
嗯,powershell 有一个答案,VBScript 有一个答案。这是一个用于 Windows cmd 批处理的。
@echo off
setlocal
for /f "tokens=5" %%I in ('find "" "%date:~0,3%" 2^>^&1') do set day=%%I
ren "oldfile.txt" "%day%_oldfile.txt"
说明
:: DIRECTIVE RESULT
:: --------------------------------------------------------
:: %date% Thu 02/07/2013
:: %date:~0,3% Thu
:: find "" "Thu" error stating "File not found - THU"
:: --------------------------------------------------------
那么剩下的就是将错误从stderr重定向到stdout并刮掉第五个token。
(source of idea 使用find 转换为大写)
【讨论】:
如果您选择 VBScript,请注意 WeekDayName 函数,因为它与区域语言设置有关。例如,Friday 是 Петък(保加利亚语),所以在我的系统中,WeekDayName 的缩写设置为 True 将返回 Пт,而不是 Fri。
WScript.Echo WeekDayAbbrENG()
Function WeekDayAbbrENG()
Dim WDs
WDs = Split("SUN MON TUE WED THU FRI SAT")
WeekDayAbbrENG = WDs(Weekday(Now) - 1)
End Function
[编辑] 实际上,同样的问题出现在 PowerShell 中的Get-Date。
【讨论】: