我不明白我们究竟如何在批处理文件中使用 reges。
我只需要用vm_[^_]*_
任何内容替换位于.txt
C:/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 。