在Windows CMD中重命名通配符文件

时间:2018-03-25 23:25:35

标签: windows cmd rename wildcard

我在文件夹中有一堆文件,例如:

  

file1的正规-EXP-suffix1
  file2的正规-EXP-suffix2

... 等等。

我尝试使用通配符(*)重命名cmd中的文件:

ren *regular-exp* *new-exp* 

但这不起作用。有谁知道怎么做?

2 个答案:

答案 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=dallasj=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"
)