我在文件夹中有一堆文件,例如:
file1的正规-EXP-suffix1
file2的正规-EXP-suffix2
... 等等。
我尝试使用通配符(*)重命名cmd中的文件:
ren *regular-exp* *new-exp*
但这不起作用。有谁知道怎么做?
答案 0 :(得分:0)
在PowerShell中相当容易。如果您确信要正确重命名文件,请从-WhatIf
cmdlet中删除Rename-Item
。
Get-ChildItem -File -Filter '*-stop-and-search-*.csv' |
ForEach-Object {
Rename-Item -Path $_.FullName -NewName ($_.Name -replace '-stop-and-search','') -WhatIf
}
如果你假设位置参数:
Get-ChildItem -File -Filter '*-stop-and-search-*.csv' |
ForEach-Object {
Rename-Item $_ ($_ -replace '-stop-and-search','') -WhatIf
}
答案 1 :(得分:0)
此答案假定您的文件始终采用以下格式:
的 [地点] 强> -stop和 - 搜索 - 的 [年]的.csv 强>
您可以使用FOR /F
首先使用“ - ”作为分隔符来分割文件名。
for /f "tokens=1,5 delims=-" %i in ('dir /b *stop-and-search*.csv') do rename "%i-*-%j" "%i-X-%j"
命令dir /b *stop-and-search*.csv
将获取所有匹配文件名的列表。
delims=-
选项会在每个“ - ”字符上拆分文件名
tokens=1,5
选择第一个和最后一个令牌,并将其分配给%%i
和%%j
。
例如,对于“dallas-stop-and-search-2016.csv”,i=dallas
和j=2016.csv
。
然后在循环内部执行相同的重命名命令,但现在可以使用标记%i
和%j
显式指定第一个和最后一个部分。
如果您想将其放入批处理文件中,请使用%%
代替%
作为变量名称。
@echo off
for /f "tokens=1,5 delims=-" %%i in ('dir /b *stop-and-search*.csv') do (
rename "%%i-*-%%j" "%%i-X-%%j"
)