【问题标题】:Rename wildcard files in Windows CMD在 Windows CMD 中重命名通配符文件
【发布时间】:2018-09-04 00:59:57
【问题描述】:

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

file1-regular-exp-suffix1
file2-regular-exp-suffix2

... 等等。

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

ren *regular-exp* *new-exp* 

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

【问题讨论】:

  • 请描述“这不起作用”是什么意思,例如给出文件名的示例,regular-exp,你使用的命令,以及你得到的结果。
  • 这些文件只是一堆 csv 文件:dallas-stop-and-search-2015.csv dallas-stop-and-search-2016.csv newyork-stop-and-search-2015。 csv 等等...我想将每个包含“停止搜索”的文件重命名为:dallas-X-2015 dallas-X-2016

标签: windows cmd rename wildcard


【解决方案1】:

在 PowerShell 中相当简单。如果您确信文件将被正确重命名,请从 Rename-Item cmdlet 中删除 -WhatIf

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
    }

【讨论】:

  • 当我在 powershell 中尝试第一个代码时,我收到以下消息: What if: Performing the operation "Rename File" on target "Item: C:\Users\allam\desktop\test\Dallas -stop-and-search-02-2016.txt 目的地:C:\Users\allam\desktop\test\Dallas-stop-and-search-02-2016.txt”。假设:对目标“项目:C:\Users\allam\desktop\test\Dallas-thing-stop-and-search-2018-08.txt 目标:C:\Users\allam\ 执行“重命名文件”操作桌面\测试\达拉斯--2018-08.txt”。但什么也没发生?
  • -WhatIf 告诉您如果重命名完成会发生什么。如果这是正确的重命名,则从Rename-Item cmdlet 行中删除-WhatIf 开关。使用-WhatIf 可以让您看到如果命令实际执行会发生什么。
【解决方案2】:

此答案假定您的文件始终采用以下形式:
[place]-stop-and-search-[year].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"
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-02
    • 2019-02-18
    • 2019-02-25
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    相关资源
    最近更新 更多