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

[文本处理] [已解决]批处理给图片加随机数字的前缀

本帖最后由 星麟 于 2015-8-26 18:36 编辑

我想要的效果是,重命名把图片文件打乱一下,但保留原来的名字,只是加一个前缀  列如 ”1-IMG_3113.jpg“   ”2-IMG_3241.jpg“   ,如果可以做到第二次执行的话,图片再重新打乱,再改一下前缀,下面两个代码看看能不能借鉴
  1. @echo off
  2. for /f "delims=" %%i in ('dir /a-d/b/s *.jpg*') do (
  3. if not "%%i"==%0 ren "%%i" "c-%%~nxi")
  4. echo 命名完毕
  5. pause
复制代码
这是给图片文件加了一个“C-”的前缀
  1. @echo off&setlocal EnableDelayedExpansion
  2. set n=0
  3. for /f "delims=" %%i in ('dir /b *.jpg') do ren "%%i" "R%%~ni%%~xi"
  4. for /f "delims=" %%i in ('dir /b *.jpg') do set /a n+=1
  5. for /f "delims=" %%i in ('dir /b *.jpg') do (
  6. call:RR
  7. ren "%%i" "!R!%%~xi"
  8. )
  9. exit
  10. :RR
  11. set /a R=%random%%%n%+1
  12. if !R!==!W%R%! Goto:RR
  13. set /a W!R!=!R!
  14. Goto:eof
复制代码
这是所有的图片随机重命名,随机按顺序排列,原来的名字改了

本帖最后由 pcl_test 于 2015-8-26 22:42 编辑

不是很严谨的一种方法
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /b *.jpg') do (
  3.     set "fn=%%~na"
  4.     set /a a=!random!%%900+100,b=!random!%%900+100,n+=1
  5.     set "#!a!!b!ж!fn!=%%a"
  6.     if "!fn:~,1!" equ "Ω" set/a m+=1
  7. )
  8. for /f "tokens=2* delims=ж=" %%i in ('set #') do (
  9.     set "fn=%%j"
  10.     set /a t+=1
  11.     if "!n!" equ "!m!" (
  12.         ren "%%j" "Ω!t!-!fn:*-=!"
  13.     ) else ren "%%j" "Ω!t!-%%j"
  14. )
  15. pause
复制代码

bat+js,保存为bat文件运行
  1. 1>1/* :
  2. @echo off
  3. dir /b *.jpg|cscript -nologo -e:jscript "%~f0"
  4. pause & exit/b
  5. */
  6. var fso = new ActiveXObject("Scripting.FileSystemObject");  
  7. var arr = WScript.StdIn.ReadAll().split(/\r?\n/);
  8. arr.sort(function(){return Math.random()>0.5?-1:1;});
  9. for(var i=0;i<arr.length;i++){
  10.     var j=i+1
  11.     if (arr[i].substr(0, 1)!='ж'){
  12.         fso.MoveFile(arr[i],'ж'+j+'-'+arr[i]);
  13.     } else fso.MoveFile(arr[i],'ж'+j+'-'+arr[i].replace(/^[^\-]+-/,''));
  14. }
复制代码
1

评分人数

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::CODE BY zhonghua POWERD BY Emacs 24.5.1
  4. for /f "delims=" %%i in ('dir /a-d /b *.jpg^|shuf') do (
  5.     set /a n+=1
  6.     set "FileName=%%i"
  7.     ren "%%i" "!n!-!FileName:*-=!"
  8. )
复制代码
第三方:shuf
1

评分人数

TOP

返回列表