小技巧|用4种编程方式帮助小姐姐快速修改9126张图片名

247 阅读2分钟

「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

背景

老乡群里,某位运营小姐姐,需要修改几千张照片的名字,把文件名的第一个字母转为大写。一下子,热闹了,下面直接上热情老乡提供的代码...

PS:需要稍微改造下,收集下方式,懒得去调整了

PowerShell

Windows PowerShell 是专为系统管理员设计的新 Windows 命令行 shell。它引入了 cmdlet(读作“command-let”)的概念,它是内置到 shell 中的一个简单的单一功能命令行工具。与许多shell 一样,Windows PowerShell 为您提供了对计算机上文件系统的访问。因为通过它便可以进行更改文件名了:

下面是我现学现用写的(瞎写能用,大佬请喷)~

ls "C:\Users\geeker\Desktop\简历\新建文件夹" -i *.jpg -r | foreach {
    $outputFileName = Split-Path $_.FullName -leaf
    $outputFilePath = Split-Path $_.FullName
    $newFileName = $outputFileName[0].toString().ToUpper()+ $outputFileName.Substring(1,$outputFileName.Length-1)
    ren $_.FullName $_.FullName.Replace($_.FullName,$outputFilePath+'/'+$newFileName)
}

BAT脚本

bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat.cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。

下面看看写法:

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /b/a-d * 2^>nul')do (
   set "str=%%~nxa"
   set "char=!str:~,1!"
   for %%b in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)do (
       if /I "!char!"=="%%b" set "char=%%b"
   )
   ren "%%a" "!char!!str:~1!"
)

Node

Node的写法,作为前端er就不多说了,直接上简易代码:

var fs = require("fs");
var path = '图片文件夹路径'
fs.readdir(path, function(err, files) {
    files.forEach(function(filename,index) {
        var oldPath = path + '/' + filename,
        newPath = path + '/' + filename.replace(/\([^)]*\)/g,"_"+index);
        fs.rename(oldPath, newPath, function(err) {
            if (!err) {
                console.log(filename + '副本替换成功!')
            } 
        })
    })
})

Python

Python的写法

import os
path = '图片文件夹路径'

fileList = os.listdir(path)
n = 0

for i in fileList:
  oldname = fileList[n]
  newname = '{}{}'.format(oldname[0].upper(),oldname[1:])
  os.rename(path+oldname,path+newname)
  n+=1

看看实现的几种方式,也算是学习啦!