「这是我参与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
看看实现的几种方式,也算是学习啦!