标题: [文件操作] 批处理如何将文件夹里所有文件的文件名末尾添加5位随机大写字母? [打印本页]
作者: crownking1983 时间: 2015-3-31 00:11 标题: 批处理如何将文件夹里所有文件的文件名末尾添加5位随机大写字母?
本帖最后由 pcl_test 于 2016-7-5 13:18 编辑
求一个批处理命令,将文件夹里所有文件末尾添加5位随机大写字母,实例——
一个文件夹里有
111.jpg
222.jpg
333.jpg
444.jpg ……
经过批处理变为
111 MDNFH.jpg
222 LIEJM.jpg
333 SKDME.jpg
444 HDNEQ.jpg ……
即所有文件末尾添加5位随机无规律的大写字母。
鄙人是一个初学者,所以提的问题可能会遭大神鄙视,求海涵……
作者: DAIC 时间: 2015-3-31 08:21
http://bbs.bathome.net/thread-34877-1-3.html
把这个帖子里面的 /ad 改成 /a-d 就行了
作者: crownking1983 时间: 2015-3-31 08:59
回复 2# DAIC
大神,在发这个问题贴之前,您说的这个方法我已经试过了,但是处理后效果是
111.jpg MDNFH
222.jpg LIEJM
333.jpg SKDME
444.jpg HDNEQ ……
这样的。随机添加的5位字母全都添加到文件名后缀后面了,所以我才发帖来问。
作者: DAIC 时间: 2015-3-31 09:05
回复 3# crownking1983
@echo off
set "str=A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
for /f "delims=" %%i in ('dir/a-d/b') do (
setlocal enabledelayedexpansion
for %%a in (%str%) do set "[!random!]%%a=%%a"
for /f "skip=21 tokens=2 delims==" %%a in ('set [') do set "var=!var!%%a"
ren "%%i" "%%~ni !var!%%~xi"
endlocal
)
pause
作者: crownking1983 时间: 2015-3-31 11:47
回复 4# DAIC
谢谢大神。又掌握了一条知识。另外我还想问下,深入一步:如果依然按照这个规则,我要实现多个文件夹下的所有文件一键批量加5个随机大写英文字母的话,那么这个批处理命令又该怎么改。
作者: DAIC 时间: 2015-3-31 13:50
回复 5# crownking1983
@echo off
set "str=A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
for /f "delims=" %%i in ('dir /a-d /b /s') do (
setlocal enabledelayedexpansion
for %%a in (%str%) do set "[!random!]%%a=%%a"
for /f "skip=21 tokens=2 delims==" %%a in ('set [') do set "var=!var!%%a"
ren "%%i" "%%~ni !var!%%~xi"
endlocal
)
pause
作者: kongzhezhi 时间: 2015-5-18 11:09
回复 crownking1983
@echo off
set "str=A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
...
DAIC 发表于 2015-3-31 13:50
请问 高手 ,这里哪个代码 表示随机了5个呢? 没看到5这个数字啊
作者: yangfengoo 时间: 2015-5-18 12:56
本帖最后由 yangfengoo 于 2015-5-18 12:57 编辑
set "str=A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" for %%a in (%str%) do set "[!random!]%%a=%%a" 26个变量
skip=21 跳过21个
剩下5个就是你要的
作者: kongzhezhi 时间: 2015-5-18 13:13
谢谢 上尉 ,学会一个随机的用法
作者: kongzhezhi 时间: 2015-5-18 18:52
又出现一个新的问题 , 运行一次bat 就会在后面多出来5个随机字母!
这样的话 ,每次都会多出来, 几次下来文件名后面就不像样了!
我在想是不是有方法 ,后面的运行是覆盖前面的结果
而不是累积在后面变成长长的尾巴
同时 不要把bat自己也在加尾巴!
作者: yangfengoo 时间: 2015-5-18 21:04
回复 11# kongzhezhi
你文件夹里是不是只有图片文件 ,还是有各种文件?
文件名是否含空格?
作者: kongzhezhi 时间: 2015-5-18 21:26
文件夹内各种文件格式都有 ,txt .jpg ,psd等
作者: yangfengoo 时间: 2015-5-18 21:59
- @echo off
- for /f "tokens=1* delims= " %%i in ('dir /a-d /b /s') do move "%%i %%j" "%%~i%%~xj"
- set "str=A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
- for /f "delims=" %%i in ('dir /a-d /b /s') do (
- setlocal enabledelayedexpansion
- for %%a in (%str%) do set "[!random!]%%a=%%a"
- for /f "skip=21 tokens=2 delims==" %%a in ('set [') do set "var=!var!%%a"
- ren "%%i" "%%~ni !var!%%~xi"
- endlocal
- )
- pause
复制代码
在第二行加入for /f "tokens=1* delims= " %%i in ('dir /a-d /b /s') do move "%%i %%j" "%%~i%%~xj"
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |