找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27597|回复: 12

[文件操作] 批处理如何将文件夹里所有文件的文件名末尾添加5位随机大写字母?

[复制链接]
发表于 2015-3-31 00:11:03 | 显示全部楼层 |阅读模式
本帖最后由 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位随机无规律的大写字母。

鄙人是一个初学者,所以提的问题可能会遭大神鄙视,求海涵……
发表于 2015-3-31 08:21:39 | 显示全部楼层
http://bbs.bathome.net/thread-34877-1-3.html
把这个帖子里面的 /ad 改成 /a-d 就行了
 楼主| 发表于 2015-3-31 08:59:32 | 显示全部楼层
回复 2# DAIC


    大神,在发这个问题贴之前,您说的这个方法我已经试过了,但是处理后效果是
111.jpg MDNFH
222.jpg LIEJM
333.jpg SKDME
444.jpg HDNEQ ……
这样的。随机添加的5位字母全都添加到文件名后缀后面了,所以我才发帖来问。
发表于 2015-3-31 09:05:10 | 显示全部楼层
回复 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

评分

参与人数 1技术 +1 收起 理由
crownking1983 + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-3-31 11:47:41 | 显示全部楼层
回复 4# DAIC


    谢谢大神。又掌握了一条知识。另外我还想问下,深入一步:如果依然按照这个规则,我要实现多个文件夹下的所有文件一键批量加5个随机大写英文字母的话,那么这个批处理命令又该怎么改。
发表于 2015-3-31 13:50:35 | 显示全部楼层
回复 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
发表于 2015-5-18 11:09:42 | 显示全部楼层
回复  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这个数字啊
发表于 2015-5-18 12:56: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个就是你要的
发表于 2015-5-18 13:13:17 | 显示全部楼层
谢谢 上尉   ,学会一个随机的用法
发表于 2015-5-18 18:52:23 | 显示全部楼层
又出现一个新的问题 , 运行一次bat 就会在后面多出来5个随机字母!
这样的话 ,每次都会多出来, 几次下来文件名后面就不像样了!

我在想是不是有方法 ,后面的运行是覆盖前面的结果
而不是累积在后面变成长长的尾巴

同时 不要把bat自己也在加尾巴!
发表于 2015-5-18 21:04:51 | 显示全部楼层
回复 11# kongzhezhi

你文件夹里是不是只有图片文件 ,还是有各种文件?
文件名是否含空格?
发表于 2015-5-18 21:26:02 | 显示全部楼层
文件夹内各种文件格式都有  ,txt  .jpg ,psd等
发表于 2015-5-18 21:59:08 | 显示全部楼层
  1. @echo off
  2. for /f "tokens=1* delims= " %%i in ('dir /a-d /b /s') do move "%%i %%j" "%%~i%%~xj"
  3. 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"
  4. for /f "delims=" %%i in ('dir /a-d /b /s') do (
  5.     setlocal enabledelayedexpansion
  6.     for %%a in (%str%) do set "[!random!]%%a=%%a"
  7.     for /f "skip=21 tokens=2 delims==" %%a in ('set [') do set "var=!var!%%a"
  8.     ren "%%i" "%%~ni !var!%%~xi"
  9.     endlocal
  10. )
  11. pause

复制代码
在第二行加入for /f "tokens=1* delims= " %%i in ('dir /a-d /b /s') do move "%%i %%j" "%%~i%%~xj"
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 16:50 , Processed in 0.021488 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表