批量重命名文件?

Mass renaming of files?

我有一个包含 46 个不同文本文件的文件夹,从 001.txt 到 046.txt,我需要添加另一个文件到 spot 30。有没有办法重命名所有文件从 030.txt 到 046.txt 向上一个数字,所以新的 030.txt 有空位吗? (在 Windows 7 上运行)

您可以使用内置于 Windows 7:

中的 PowerShell
46..30|Rename-Item -Path {'{0:000}.txt'-f$_} -NewName {'{0:000}.txt'-f($_+1)}
@ECHO Off
SETLOCAL
SET "sourcedir=U:\sourcedir\t w o"
SET "insertat="
SET /p "insertat=Insert at which number ? "
IF NOT DEFINED insertat GOTO :EOF 
SET /a insertat1=1%insertat%
SET /a howmany=1
SET /p "howmany=Insert How many ? [%howmany%]"
IF "%howmany%"=="0" GOTO :EOF 


FOR /f "delims=" %%a IN (
 'dir /b /o-n /a-d "%sourcedir%\*.txt" '
 ) DO (
 CALL :isnum %%~na
 IF NOT DEFINED notnumber SET /a maxnum=1%%~na&GOTO insert
)
ECHO maxnum NOT found
GOTO :eof

:insert
SET /a newnum=maxnum + howmany
IF EXIST "%sourcedir%\%maxnum:~1%.txt" ECHO(REN "%sourcedir%\%maxnum:~1%.txt" %newnum:~1%.txt
SET /a maxnum -=1
IF %maxnum% GEQ 1%insertat% GOTO insert 

GOTO :EOF

:: Determine whether %* is purely numeric
:isnum
SET "notnumber=%~2"
IF DEFINED notnumber GOTO :EOF 
SET "notnumber=9%~1"
FOR /l %%z IN (0,1,9) DO CALL SET "notnumber=%%notnumber:%%z=%%"
GOTO :eof

我也可以 post 这个不管怎样。

它会自动定位最高的文件号并允许插入任意数量的插槽(默认为 1 for Enter

您需要更改 sourcedir 的设置以适合您的情况。

所需的 REN 命令仅 ECHOed 用于测试目的。 确认命令正确后,将ECHO(REN更改为REN以实际重命名文件。

这是一个简单的纯批处理解决方案

@echo off
setlocal enableDelayedExpansion
set increment=1
set "start=030"

for /f %%F in (
  'dir /b /a-d /o-n ???.txt^|findstr /rx "[0-9][0-9][0-9]\.txt"'
) do if "%%~nF" geq "%start%" (
  set /a new=1%%~nF+increment
  ren %%F !new:~1!%%~xF
)