Windows使用批处理(.bat)对文件夹内前缀+编号命名文件批量更改编号顺序(或重命名)

Windows使用批处理(.bat)对文件夹内前缀+编号命名文件批量更改编号顺序(或重命名)

问题来源

通常在我们处理一些文件时,文件命名已经较为规则,如有统一的前缀或后缀:
在这里插入图片描述
但其提供的顺序可能并不是我们所希望的顺序,尤其是在其编号正好和我们所需顺序相反的情况下,如果文件数量较小,我们手动更改即可,但如果文件数量较大,此时手动更改编号便较为繁琐,我们可以通过编辑批处理脚本的方式将这些文件重命名。

问题分析

在学习编程时我们知道,通常交换两个变量需要一个中间变量来保存第一个被交换变量的值,以避免数值被覆盖从而丢失信息,因此,直接按顺序对文件进行重命名的方法并不可取,我们需先借助一个缓存文件(文件夹)保存原始文件,然后再拷贝缓存文件重命名并覆盖原始文件。以下是具体代码。

代码

@echo off
chcp 65001
setlocal enabledelayedexpansion

set folderPath=%cd%
set filesubname=IMG-0001-00
set cachename=_Cache
set cachefloder=%folderPath%%cachename%
mkdir %cachefloder%

set /a counter=0
for %%F in (%folderPath%\*.dcm) do (
    set /a counter+=1
)

echo 文件总个数%counter%

xcopy "%folderPath%\*" "%cachefloder%\" /E /I /Y

for %%F in (%cachefloder%\*.dcm) do (
    set thisfilename=%%~nF
    rem 减去前缀
    set filenumber=!thisfilename:*%filesubname%=!
    REM 删去数字编号前方的0,避免误读取成八进制
    set filenumber=!filenumber:0=!
    set /a newnumber=%counter%-!filenumber!+1
    REM 对数字编号进行补零处理
    if !newnumber! lss 10 (
            set paddedNumber=00!newnumber!
    ) else if "!number!" lss 100 (
            set paddedNumber=0!newnumber!
    ) else (
            set paddedNumber=!newnumber!
    )
    set newfilename=%folderPath%\%filesubname%!paddedNumber!.dcm
    copy %%F !newfilename!
    echo 将%%F文件复制到!newfilename!
)

rmdir /s /q "%cachefloder%"

echo 
echo 重命名完成
pause

代码分析

首先,我们提取必要的变量:当前目录(folderPath)、要创建的缓存文件夹名称(cachefloder)、文件夹内文件数量(counter),并创建缓存文件夹。同时,设置文件夹内文件名的共同前缀(filesubname),以上图示例为例,其共有二百多张图片,因此,发生变化的是文件名的后三位数字,不发生变化的是前缀“IMG-0001-00”。
然后,我们将所有文件复制到缓存文件夹,接着遍历整个缓存文件夹的文件,提取文件名的前缀,获取其数字编号,同时计算新的数字编号,并将其转为字符串类型并进行补零操作,最后,将缓存文件以新的命名覆盖原始文件。
完成所有操作后,删除缓存文件。

运行示例

在此,我们以三个txt文件为例,分别命名为Test-0X.txt,其中,三个文件中分别按原始编号写入数字1,2,3。
在这里插入图片描述
接着,我们在文件所在目录新建一个bat脚本,将上述代码进行修改,如下(注意要将扩展名更改为txt):
在这里插入图片描述
修改完后双击运行脚本,如下所示:
在这里插入图片描述
至此,文件已被全部重命名。
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用Prometheus监控批处理脚本(.bat文件),您需要进行以下步骤: 1. 安装和配置Prometheus:您需要在服务器上安装Prometheus,并配置Prometheus以监控您的目标。您可以在Prometheus的配置文件中定义您要监控的目标。您可以使用以下示例配置来监视批处理脚本: ``` scrape_configs: - job_name: 'batch-jobs' static_configs: - targets: ['localhost:9090'] - labels: job: 'batch-jobs' instance: 'batch-server' ``` 在上面的示例中,您需要将localhost:9090替换为批处理脚本运行的服务器地址和端口。请确保您在配置文件中设置了正确的目标。 2. 在批处理脚本中暴露指标:Prometheus监控的目标需要向Prometheus公开指标。您需要在批处理脚本中安装和配置Prometheus的客户端库,以便您的脚本可以暴露指标。例如,您可以使用以下代码将计数器暴露给Prometheus: ``` REM 安装并配置Prometheus客户端库 choco install prometheus-net REM 导入Prometheus客户端库 set "PATH=%PATH%;C:\Program Files\Prometheus" REM 定义计数器 set counter=0 REM 每次运行增加计数器值 set /a counter+=1 REM 将计数器暴露给Prometheus echo batch_job_count %counter%>> prometheus_metrics.txt ``` 在上面的示例中,您需要将prometheus_metrics.txt替换为您要使用的文件名。该文件应该是Prometheus客户端库可以读取的格式,通常是文本格式,每行一个指标名称和值。 3. 在Prometheus中查询指标:完成上述步骤后,您可以在Prometheus中查询批处理脚本的指标。您可以使用PromQL查询语言来查询指标,并将结果可视化为图表或图形仪表板。例如,您可以使用以下PromQL查询来获取计数器值: ``` batch_job_count ``` 在上面的示例中,batch_job_count是您在批处理脚本中定义的指标名称。 以上就是使用Prometheus监控批处理脚本的基本步骤。请注意,您需要根据您的具体情况进行适当的配置和自定义。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值