[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何将文件夹里所有文件的文件名末尾添加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位随机无规律的大写字母。

鄙人是一个初学者,所以提的问题可能会遭大神鄙视,求海涵……

  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"

TOP

文件夹内各种文件格式都有  ,txt  .jpg ,psd等

TOP

回复 11# kongzhezhi

你文件夹里是不是只有图片文件 ,还是有各种文件?
文件名是否含空格?

TOP

又出现一个新的问题 , 运行一次bat 就会在后面多出来5个随机字母!
这样的话 ,每次都会多出来, 几次下来文件名后面就不像样了!

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

同时 不要把bat自己也在加尾巴!

TOP

谢谢 上尉   ,学会一个随机的用法

TOP

本帖最后由 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个就是你要的

TOP

回复  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这个数字啊

TOP

回复 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

TOP

回复 4# DAIC


    谢谢大神。又掌握了一条知识。另外我还想问下,深入一步:如果依然按照这个规则,我要实现多个文件夹下的所有文件一键批量加5个随机大写英文字母的话,那么这个批处理命令又该怎么改。

TOP

回复 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

评分人数

TOP

回复 2# DAIC


    大神,在发这个问题贴之前,您说的这个方法我已经试过了,但是处理后效果是
111.jpg MDNFH
222.jpg LIEJM
333.jpg SKDME
444.jpg HDNEQ ……
这样的。随机添加的5位字母全都添加到文件名后缀后面了,所以我才发帖来问。

TOP

http://bbs.bathome.net/thread-34877-1-3.html
把这个帖子里面的 /ad 改成 /a-d 就行了

TOP

返回列表