.bat-正则表达式重命名?

.bat-正则表达式重命名?

我不明白我们究竟如何在批处理文件中使用 reges。

我只需要用vm_[^_]*_任何内容替换位于.txtC:/ProjectFiles/ 子文件夹中的文件

文件名如下:
vm_dsr_ads_fire.txt
vm_m1911_idle.txt

我需要它们以以下文件名结尾:
ads_fire.txt
idle.txt

我该怎么做呢?

答案1

通过阅读help for和锻炼?

让我们认真起来,这里你不需要正则表达式(如果是这样,那么你最好使用 vbscript 或 Powershell)

此批处理生成一个DoRename.cmd您可以随后修改并执行的批处理。更改Basefld以适合您的环境。

@Echo off
Set Basefld=Q:\Test
Pushd %Basefld% ||(Echo can't cd to %Basefld%&Pause&Exit /B 1)
> DoRename.cmd (
For /F "Delims=" %%A in ('Dir /B/S "vm_*_*.txt"'
  ) DO For /F "tokens=1,2* Delims=_" %%B in ('Echo:%%~nxA'
    ) Do Echo Ren "%%~A" "%%D"
)
start "" Notepad.exe DoRename.cmd

第二批没有不必要的安全带,将立即重命名当前目录和子目录中的文件。

@Echo off
For /F "Delims=" %%A in ('Dir /B/S "vm_*_*.txt"'
  ) DO For /F "tokens=1,2* Delims=_" %%B in ('Echo:%%~nxA'
    ) Do Ren "%%~A" "%%D"

第一个 for 遍历文件树,第二个 for 解析文件名和扩展名。 delims=_ 将名称拆分为标记。 token1 又名 %%B 为 ´vm´ token2 %%C 前两个下划线之间的文本, token3 *%%D 为名称的其余部分,包括 .ext 。

相关内容