我目前遇到问题,想找到一种方法来创建一个小批量,它将重命名特定文件夹的所有文件。这是一个例子:
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" }
答案 0 :(得分:1)
如果您使用PowerShell,那么您可以使用下面的简单PowerShell
命令完成此操作。对于该文件夹/目录中的所有文件,它将2014
替换为2015
。
cd
到cd 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