如何在 Windows 中一次重命名 80,000 个文件

如何在 Windows 中一次重命名 80,000 个文件

我的文件夹中有 80,000 个文件,我需要重命名所有文件

filename.jpg

._filename.jpg

在 Windows 环境中,我猜是来自 dos。原因是我已将这些文件从 unix 压缩为 tar.gz 并复制到 windows 中,由于某种原因文件名发生了变化。

你能告诉我执行该命令的命令是什么吗?谢谢

答案1

您可以使用内置rename或者ren命令:

ren *.jpg ._*.jpg

不过,与所有这些事情一样,请先在仅包含几个文件的目录中尝试一下。

答案2

以下是使用 PowerShell 的方法:

导航到您的文件夹并运行此命令

Get-ChildItem *.jpg | Rename-Item -newname {"._" + $_.Name}

额外奖励简短版本:

gci *.jpg | ren -newname {"._" + $_.Name}

答案3

我有2个解决方案:

  1. 所有文件都位于同一文件夹中

    • 从该文件夹的命令提示符运行以下命令:

      for /f "delims=¯" %i in ('dir /b /on') do ren "%i" "._%i"
      
  2. 当子文件夹中有文件并且您想要用所需的字符串替换“n”个前字符时,完整的解决方案:D

    • 使用以下命令创建批处理文件
    • 将变量参数更改为您想要的
      • path:放入""文件的根路径(例如“C:\documents and settings\user\desktop\new folder”
      • numfirstchars2replace:将要替换的第一个字符放在一个数字中(在你的情况下为 2)
      • str2put:将要添加的字符串作为新文件名的前缀(在您的情况下为._
    • 在与文件所在位置不同的文件夹中运行它


@echo off

::only to tell user what this bat are doing
echo.1.initializing...

::enable that thing to allow, for example, incremental counter in a for loop :)
echo.- EnableDelayedExpansion
SETLOCAL EnableDelayedExpansion

::variables
echo.- variables
:: - place here the absolute root path of your files
set path="put here where are the root folder of your files"
set pathbak=%cd%
set numfirstchars2replace=2
set str2put=._

::go to %path% and its driveletter
echo.- entering the path you want
for /f "delims=¯" %%i in ('echo.%path%') do %%~di
cd %path%

::search all subfolders and save them to a temp file
echo.- searching for subfolders
echo.%path%>%temp%\tmpvar.txt
for /f "delims=¯" %%i in ('dir /s /b /on /ad') do echo."%%i">>%temp%\tmpvar.txt

::execute command for root folder and all found subfolders
echo.
echo.2.executing...
for /f "delims=¯" %%i in (%temp%\tmpvar.txt) do (
  cd %%i
  echo.- in folder: %%i
  for /f "delims=¯" %%j in ('dir /b /on /a-d') do (
    set newname=%%j
    set newname=!newname:~%numfirstchars2replace%,1000!
    echo.- renaming from "%%j" to "%str2put%!newname!"...
    ren "%%j" "%str2put%!newname!"
  )
)

echo.
echo.3.exiting...
::return to %pathbak% and its driveletter
for /f "delims=¯" %%i in ('echo.%pathbak%') do %%~di
cd %pathbak%

@echo on

答案4

尝试 Powershell(Windows 7 预装):

Get-Childitem /path/to/your/files | foreach-object { move-item $_ $("._" + $_.name) }

(已在我的下载目录中测试过。)

编辑:Siim K 的代码将在每个“._filename.jpg”后附加一个额外的“.jpg”。删除 Siim K 代码中的最后一个“.jpg”,您将获得一个简短、优雅的代码来重命名文件。

相关内容