这里我有一些代码可以找到所有.m4a文件并回显文件名减去前三个字符:
setlocal enabledelayedexpansion
for %%a in (*.m4a) do (
set oldName=%%a
set newName=!oldName:~3!
echo !newName!
)
但是,我只想对从1或0开始的文件执行此操作。我知道我可以使用
for %%a in (0*.m4a) do (
仅适用于从0开始的文件,但如何为1和0创建?谢谢你的帮助。
答案 0 :(得分:0)
for %%a in (0*.m4a 1*.m4a) do (
只需将其包含在for
集
但for
对一组文件是动态的。如果新命名文件的新名称与for
循环中的通配符表达式匹配,则可能会处理两次新命名文件。要避免它(如有必要),请使用dir
命令检索静态列表并处理文件列表。
for /f "delims=" %%a in ('dir /b /a-d 0*.m4a 1*.m4a') do (
set "oldName=%%a"
set "newName=!oldName:~3!"
ren "%%a" "!newName!"
)
答案 1 :(得分:0)
您的代码只需要很小的修改。需要注意的一点是,所有形式的DIR和FOR命令都匹配短文件名以及长文件名。
解决方案是通过findstr过滤器管理命令(如果需要)。
@echo off
setlocal enabledelayedexpansion
for %%a in (0*.m4a 1*.mp4) do (
set oldName=%%a
set newName=!oldName:~3!
echo !newName!
)