使用批处理/ Powershell修改文件日期

时间:2014-11-06 08:16:07

标签: powershell batch-file batch-rename

我目前遇到问题,想找到一种方法来创建一个小批量,它将重命名特定文件夹的所有文件。这是一个例子:

ID32432 - 文件名 - 31.01.2014

我试图创建一个能够在2015年1月31日之前修改31.01.2014的批次 有没有办法做到这一点?

提前致谢。 !

PS:有没有人知道如何为我的powershell添加一个正则表达式,以确保我取代这种类型的日期? DD.MM.YYYY

然后我想增加yyyy + 1.我想这应该是这样的:"\d{2}.\d{2}.\d{4}"

这是我最初的PowerShell代码:

Dir | Rename-Item -NewName { $_.name -replace "2014","2015" }

3 个答案:

答案 0 :(得分:1)

如果您使用PowerShell,那么您可以使用下面的简单PowerShell命令完成此操作。对于该文件夹/目录中的所有文件,它将2014替换为2015

cdcd D:\Testing

等特定目录
Dir | Rename-Item -NewName { $_.name -replace "2014","2015" }

不完全是默认情况下可以做的事情

使用以下代码段创建一个文件并将其保存为test.ps1 [任何命名]

param (
[Parameter(Mandatory=$true)]
[string] $path = $null
)

cd $path;

Dir | Rename-Item -NewName { $_.name -replace "2014","2015" };

它现在是一个PowerShell脚本,可以从PowerShell命令提示符运行,如下所示D:\Testing只是命令行参数(要传递给脚本else脚本的必需参数将失败)

.\test.ps1 D:\Testing

现在,您可以在Windows任务计划程序中轻松设置此脚本,并根据您的需要在特定时间运行该脚本。

答案 1 :(得分:0)

使用纯批次(假设您已经或者您可以获得文件名):

@echo off

set "the_file=ID32432 - Name of the file - 31.01.2014.ext"

setlocal enableDelayedExpansion
for /f "tokens=1,2,* delims=." %%A in ("%the_file%") do (
    set year_part=%%C
    set year_=!year_part:~0,4!
    set rest_=!year_part:~4!
    set /a year_inc_=year_+1
    set new_name=%%A%%B!year_inc_!!rest_!

)
endlocal &&(
    set new_name=%new_name%
)

echo %new_name%

答案 2 :(得分:-1)

希望这可以帮到你。

for f in * ;do mv $f ${f/%2014/2015} ; done

${f/%2014/2015}表示替换f

的后缀