|
本帖最后由 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 可完成改名 |
|