| 
 | 
 本帖最后由 wang_966 于 2015-9-19 21:07 编辑  
 
第一种方式: 
for %%f in (*.u8k) do  for /f "tokens=1,2,3,4 delims=_" %%i in (%f%) do  move   %%i_%%j_%%k_%%l    %%l 
我忘了说明须编辑 *.BAT 再执行, 因为 %%f 适用在 *.BAT, 而 %f 是直接在 DOS 下命令. 
利用 "_" 将字串切成4份, 其值分别存入 %%i, %%j, %%k, %%l  
 
至于第二种方式比第一种方式更有弹性, 因为Unix/Linux原本的强项便是字串处理,  
如果每一行并不一定有3个 "_", 则仍可正常执行,  
利用 "\(.*_\)" 及 "\(.*\)" 将字串切成2份, 其值分别存入 \1, \2  
 
如何利用 仿unix/linux命令 sed 一次替换文字中的 "某些相似性的字串" ==> 
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=362520 
 
假设 input.txt 内容如下列四行: 
1509_08_080703_1023_083012345678.u8k 
150_90080706_1001_084012345678.u8k 
15090080710_1068_085012345678.u8k 
150908080721046_086012345678.u8k 
 
sed.exe -e "s/\(.*_\)\(.*\)/move   \1\2   \2/" < input.txt > ren_file.bat 
 
执行  ren_file.bat 可完成改名  |   
 
 
 
 |