我想重命名文件和使用批处理文件以下列方式将它们转移到一个库:
c:\jg_Folder_xy>
blabla01_000.bla --> blabla01_001.bla
blabla02_000.bla --> blabla02_001.bla
blabla03_000.bla --> blabla03_001.bla
c:\sj_Folder_mx>
blabla01_000.bla --> blabla01_002.bla
blabla02_000.bla --> blabla02_002.bla
blabla03_000.bla --> blabla03_002.bla
c:\an_Folder_kj>
blabla01_000.bla --> blabla01_003.bla
blabla02_000.bla --> blabla02_003.bla
blabla03_000.bla --> blabla03_003.bla
而且比所有转移到一个新的文件夹
c:\New_Folder>
blabla01_001.bla
blabla01_002.bla
blabla01_003.bla
blabla02_001.bla
blabla02_002.bla
blabla02_003.bla
blabla03_001.bla
blabla03_002.bla
blabla03_003.bla
任何人都知道什么是最有效的方法是什么?
注:文件夹的名字都只有一个共同的子串
怎么做
下面是批一个简单的解决方案:
@echo off
setlocal enabledelayedexpansion
set "SRC_PATH=c:\jg_Folder_xy"
set "DEST_PATH=c:\New_Folder"
for %%f in ("%SRC_PATH%"\*.bla) do (
set fname=%%~nf
set fbase=!fname:~0,-4!
set findex=!fbase:~-2!
move %%f "%DEST_PATH%"\!fbase!_0!findex!%%~xf
)
注:此脚本必须在每个源文件夹分别运行(改变SRC_PATH
每次)。 另外,您也可以修改for
循环的双循环,就像这样:
for /d %%d in (*_Folder_*) do for %%f in ("%%d"\*.bla) do (
这样它会在所有需要的文件夹中的所有文件会自动遍历(在SRC_PATH
线将不再需要)。
这个怎么运作
在for
循环遍历在源文件夹中的文件,并指定文件名(与完整路径)到%%f
在每次迭代中。
set fname=%%~nf
中提取的文件名并丢弃扩展。
set fbase=!fname:~0,-4!
获得所有,但最后4个字符( 即丢弃“_000”)。
这实质上提取基本文件名,这是“blabla01”,“blabla02” ......在你的榜样。
set findex=!fbase:~-2!
从提取的最后2个字符fbase
,即运行标志。
假定运行指数正好是两个字符。
该move
命令重命名这些文件,并将其移动到目标文件夹。
希望这可以帮助。