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


    好的  12、13楼有什么区别

TOP

你对比一下啊

TOP

回复 15# newswan

改前 有对比  改后 系统找不到文件

TOP

还有,我看你的文件名,
有的是 01 02
有的是 1 2

TOP

加了判断  前面有没有0
有没有三位数的?
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. cd %~dp0
  4. set order16= 08 09 10 07 06 11 12 05 04 13 14 03 02 15 16 01
  5. set f=%1
  6. for /f "delims=" %%i in ('dir /b /s /a-d "%f%" 2^>nul ^| find /c /v ""') do (
  7. set n=%%i
  8. )
  9. echo,
  10. echo folder:     %f%
  11. echo file count: %n%
  12. echo,
  13. pushd %f%
  14. cd
  15. set order=!order%n%!
  16. set/a i=0
  17. for %%a in ( %order% ) do (
  18. set/a i+=1
  19. if exist 测试_!i!.jpg (set j=!i!) else (set j=0!i!)
  20. echo ren   测试_!j!.jpg  %%a.jpg
  21. )
  22. popd
  23. echo,
  24. echo, complete
  25. pause
复制代码

TOP

本帖最后由 qd2024 于 2024-1-10 21:32 编辑

回复 20# newswan

应该会有3位数的情况    不足3位的用0补位

TOP

页码规律,powershell
  1. function get-order() {
  2. param(
  3. [int]$n
  4. )
  5. $r = $n /4
  6. $c = 4
  7. $order =  [System.Array]::CreateInstance([int], ($n + 1))
  8. for ( $i = 1 ; $i -le $r ; $i++ ) {
  9. $num = ($i -1) *2 + 1
  10. $x = ($r + 1) - $i
  11. $y = 4
  12. $idx = ( ($x -1) *4 ) + $y
  13. # Write-Host $num  $idx
  14. $order[$idx] = $num
  15. }
  16. for ( $i = 1 ; $i -le $r ; $i++ ) {
  17. $num = ($i -1) *2 + 2
  18. $x = ($r + 1) - $i
  19. $y = 1
  20. $idx = ( ($x -1) *4 ) + $y
  21. # Write-Host $num  $idx
  22. $order[$idx] = $num
  23. }
  24. for ( $i = 1 ; $i -le $r ; $i++ ) {
  25. $num = ($i -1) *2 + 1 + ( $n / 2 )
  26. $x = $i
  27. $y = 2
  28. $idx = ( ($x -1) *4 ) + $y
  29. # Write-Host $num  $idx
  30. $order[$idx] = $num
  31. }
  32. for ( $i = 1 ; $i -le $r ; $i++ ) {
  33. $num = ($i -1) *2 + 2 + ( $n / 2 )
  34. $x = $i
  35. $y = 3
  36. $idx = ( ($x -1) *4 ) + $y
  37. # Write-Host $num  $idx
  38. $order[$idx] = $num
  39. }
  40. return ( $order[1..$n] -join " ")
  41. }
  42. $order = get-order 72
  43. write-host $order
复制代码

TOP

回复 21# qd2024
  1. if exist 测试_!i!.jpg (set j=!i!) else (set j=0!i!)
复制代码
改成
  1. if exist 测试_!i!.jpg (set j=!i!)
  2. if exist 测试_0!i!.jpg (set j=0!i!)
  3. if exist 测试_00!i!.jpg (set j=00!i!)
复制代码

TOP

回复 22# newswan


    这个怎么用

TOP

回复 23# newswan


    能不能把"_"前面的汉字忽略了,不管是什么汉字都行,只对"_"后面的数字有效

TOP

保存为 xxx.ps1
调用
  1. powershell -file xxx.ps1 128
复制代码
  1. param(
  2. [int]$n
  3. )
  4. function get-order() {
  5. param(
  6. [int]$n
  7. )
  8. $r = $n /4
  9. $c = 4
  10. $order =  [System.Array]::CreateInstance([int], ($n + 1))
  11. for ( $i = 1 ; $i -le $r ; $i++ ) {
  12. $num = ($i -1) *2 + 1
  13. $x = ($r + 1) - $i
  14. $y = 4
  15. $idx = ( ($x -1) *4 ) + $y
  16. # Write-Host $num  $idx
  17. $order[$idx] = $num
  18. }
  19. for ( $i = 1 ; $i -le $r ; $i++ ) {
  20. $num = ($i -1) *2 + 2
  21. $x = ($r + 1) - $i
  22. $y = 1
  23. $idx = ( ($x -1) *4 ) + $y
  24. # Write-Host $num  $idx
  25. $order[$idx] = $num
  26. }
  27. for ( $i = 1 ; $i -le $r ; $i++ ) {
  28. $num = ($i -1) *2 + 1 + ( $n / 2 )
  29. $x = $i
  30. $y = 2
  31. $idx = ( ($x -1) *4 ) + $y
  32. # Write-Host $num  $idx
  33. $order[$idx] = $num
  34. }
  35. for ( $i = 1 ; $i -le $r ; $i++ ) {
  36. $num = ($i -1) *2 + 2 + ( $n / 2 )
  37. $x = $i
  38. $y = 3
  39. $idx = ( ($x -1) *4 ) + $y
  40. # Write-Host $num  $idx
  41. $order[$idx] = $num
  42. }
  43. return ( $order[1..$n] -join " ")
  44. }
  45. if ( $n % 4 -eq 0 ) {
  46. $order = get-order $n
  47. write-host $order
  48. }
复制代码
1

评分人数

TOP

回复 26# newswan


    感谢

TOP

回复 25# qd2024
  1. @echo off
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. cd %~dp0
  4. set folder=%1
  5. set order16= 08 09 10 07 06 11 12 05 04 13 14 03 02 15 16 01
  6. for /f "usebackq delims=" %%i in (` dir /b /a-d "%folder%" 2^>nul ^| find /c /v "" `) do (
  7. set n=%%i
  8. )
  9. set order=!order%n%!
  10. echo,
  11. echo folder:     %folder%
  12. echo file count: %n%
  13. echo,
  14. pushd %folder%
  15. for /f "usebackq" %%a in (` dir /b .`) do (
  16. for /f "tokens=2 delims=_" %%a in ("%%~na") do (
  17. set idxScan=%%a
  18. )
  19. call :C_idx_scan_to_real order idxScan idxReal
  20. echo ren  %%a  !idxReal!%%~xa
  21. )
  22. popd
  23. echo,
  24. echo, ----complete----
  25. echo,
  26. pause
  27. exit/b
  28. :C_idx_scan_to_real
  29. setlocal
  30. set order=!%1!
  31. set idx=!%2!
  32. set /a i=0
  33. for %%a in ( %order% ) do (
  34. set /a i+=1
  35. if "!i!" == "%idx%" set idx=%%a
  36. )
  37. (
  38. endlocal
  39. set %3=%idx%
  40. )
  41. goto :eof
复制代码

TOP

删除第25行 echo

TOP

回复 29# newswan


    好的 太感谢了  我试试

TOP

返回列表