CMD BAT如何查找并重命名文件

时间:2019-01-31 10:31:01

标签: batch-file cmd

我有一个名为1830AE16C excel的文件夹

我想使用1830AE16C重命名此文件夹中的文件。

(之前)

1_1234AE16C
2_5559AE15C
4_1000AE16E_pay

(之后)

1_1830AE16C
2_1830AE16C
4_1830AE16C_pay

我已经尝试过了:

@echo off

Setlocal enabledelayedexpansion

for %%I in (.) do set CurrDirName=%%~nxI

   SET Replace=%CurrDirName: DOC=%
   ECHO %Replace%     

Set /p Pattern="Old name: "


For %%a in (*%Pattern%*.*) Do (
    Set "File=%%a"
    Ren "%%a" "!File:%Pattern%=%Replace%!"
)

如何省略询问输入文本的步骤?

1 个答案:

答案 0 :(得分:1)

我稍微重写了您的脚本。它不再使用变量,因此不需要延迟扩展:

@echo off
for /d %%I in (*) do (
  for /f "tokens=1,*" %%A in ("%%I") do (
    Echo Foldername: %%I
    Echo First part: %%A
    Echo Secnd part: %%B
    for %%F in ("%%I\*") do (
      Echo Filename:   %%F
      for /f "tokens=1,2,* delims=_" %%X in ("%%~nxF") do (
        if "%%Z"=="" (
          ECHO ren "%%F" "%%X_%%A"
        ) else (
          ECHO ren "%%F" "%%X_%%A_%%Z"
        )
      )
    )
  )
)

我插入了Echo行用于故障排除/显示会发生什么情况。
出于安全原因,我还通过ren禁用了ECHO命令。在实际启用输出之前,请分析输出(如果正是您想要的输出)。