首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Powershell从文件名中查找季度和年份

使用Powershell从文件名中查找季度和年份
EN

Stack Overflow用户
提问于 2017-09-20 21:11:19
回答 2查看 294关注 0票数 0

编辑后的问题。

我正在编写一个批处理脚本,其中一个文件包含一个名称和文件名中的日期。因此,我在提取ADATE变量中的日期

代码语言:javascript
运行
复制
for /D %%d in ("C:\AA\*") do (
for %%a in ("%%d\*.*") do (SET "FPath=%%~dpa"
Set "FName=%%~na" )
)
::echo %FPath%/%FName%
::timeout 4

For /F "Tokens=4-9 Delims=-" %%A In ("%FName%") Do (
    Set "Freq=%%B"
    Set "ADate=%%F%%E%%D"
)

ADate填充正确。

代码语言:javascript
运行
复制
Set "DFormat=ddMMyyyy"

For /F UseBackQ %%A In (
    `Powershell "([datetime]::ParseExact('%ADate%','%DFormat%', [System.Globalization.CultureInfo]::CurrentCulture)).AddMonths(-1).ToString('MMM-yyyy')"`
) Do Set "DateF=%%A"

上面的逻辑运行良好。

但现在我想要获取季度,而不是月份-年。因此,文件夹名称将为Q1-2017、Q2-2017等(日期在文件名减1季度)

有人能告诉我如何得到这个吗?我正在尝试下面的逻辑。

代码语言:javascript
运行
复制
`Powershell "([datetime]::ParseExact('%ADate%','%DFormat%',[System.Globalization.CultureInfo]::CurrentCulture)).AddQuarter(-1).ToString('M')"`
EN

回答 2

Stack Overflow用户

发布于 2017-09-20 21:19:50

DateTime结构没有概念或“季度”,但它很容易计算-将1加到月份,除以3,然后转换为整数,然后四舍五入将负责其余部分:

代码语言:javascript
运行
复制
$DateTime = [datetime]::ParseExact('01042017','ddMMyyyy',[System.Globalization.CultureInfo]::CurrentCulture)
$Quarter = [int](($dateTime.Month + 1) / 3)
票数 1
EN

Stack Overflow用户

发布于 2017-09-20 21:41:41

使用-f operator并包装在批处理中

代码语言:javascript
运行
复制
:: Q:\Test\2017\09\20\SO_46323005.cmd
@Echo off
For /F "Delims=" %%A in (
    'powershell -nop -c "\"Q{0}-{1}\" -f [Math]::ceiling((Get-date -f MM)/3), $(Get-date -f yyyy) "'
) Do Set "Folder=%%A"
Set Folder
Goto :Eof

样本输出

代码语言:javascript
运行
复制
> SO_46323005.cmd
Folder=Q3-2017
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46323005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档