返回列表 发帖
回复 15# newswan


    好的  12、13楼有什么区别

TOP

你对比一下啊

TOP

回复 15# newswan

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

TOP

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

TOP

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

TOP

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

回复 20# newswan

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

TOP

页码规律,powershell
function get-order() {
param(
[int]$n
)
$r = $n /4
$c = 4
$order =  [System.Array]::CreateInstance([int], ($n + 1))
for ( $i = 1 ; $i -le $r ; $i++ ) {
$num = ($i -1) *2 + 1
$x = ($r + 1) - $i
$y = 4
$idx = ( ($x -1) *4 ) + $y
# Write-Host $num  $idx
$order[$idx] = $num
}
for ( $i = 1 ; $i -le $r ; $i++ ) {
$num = ($i -1) *2 + 2
$x = ($r + 1) - $i
$y = 1
$idx = ( ($x -1) *4 ) + $y
# Write-Host $num  $idx
$order[$idx] = $num
}
for ( $i = 1 ; $i -le $r ; $i++ ) {
$num = ($i -1) *2 + 1 + ( $n / 2 )
$x = $i
$y = 2
$idx = ( ($x -1) *4 ) + $y
# Write-Host $num  $idx
$order[$idx] = $num
}
for ( $i = 1 ; $i -le $r ; $i++ ) {
$num = ($i -1) *2 + 2 + ( $n / 2 )
$x = $i
$y = 3
$idx = ( ($x -1) *4 ) + $y
# Write-Host $num  $idx
$order[$idx] = $num
}
return ( $order[1..$n] -join " ")
}
$order = get-order 72
write-host $orderCOPY

TOP

回复 21# qd2024
if exist 测试_!i!.jpg (set j=!i!) else (set j=0!i!)COPY
改成
if exist 测试_!i!.jpg (set j=!i!)
if exist 测试_0!i!.jpg (set j=0!i!)
if exist 测试_00!i!.jpg (set j=00!i!)COPY

TOP

回复 22# newswan


    这个怎么用

TOP

回复 23# newswan


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

TOP

保存为 xxx.ps1
调用
powershell -file xxx.ps1 128COPY
param(
[int]$n
)
function get-order() {
param(
[int]$n
)
$r = $n /4
$c = 4
$order =  [System.Array]::CreateInstance([int], ($n + 1))
for ( $i = 1 ; $i -le $r ; $i++ ) {
$num = ($i -1) *2 + 1
$x = ($r + 1) - $i
$y = 4
$idx = ( ($x -1) *4 ) + $y
# Write-Host $num  $idx
$order[$idx] = $num
}
for ( $i = 1 ; $i -le $r ; $i++ ) {
$num = ($i -1) *2 + 2
$x = ($r + 1) - $i
$y = 1
$idx = ( ($x -1) *4 ) + $y
# Write-Host $num  $idx
$order[$idx] = $num
}
for ( $i = 1 ; $i -le $r ; $i++ ) {
$num = ($i -1) *2 + 1 + ( $n / 2 )
$x = $i
$y = 2
$idx = ( ($x -1) *4 ) + $y
# Write-Host $num  $idx
$order[$idx] = $num
}
for ( $i = 1 ; $i -le $r ; $i++ ) {
$num = ($i -1) *2 + 2 + ( $n / 2 )
$x = $i
$y = 3
$idx = ( ($x -1) *4 ) + $y
# Write-Host $num  $idx
$order[$idx] = $num
}
return ( $order[1..$n] -join " ")
}
if ( $n % 4 -eq 0 ) {
$order = get-order $n
write-host $order
}COPY
1

评分人数

TOP

回复 26# newswan


    感谢

TOP

回复 25# qd2024
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
cd %~dp0
set folder=%1
set order16= 08 09 10 07 06 11 12 05 04 13 14 03 02 15 16 01
for /f "usebackq delims=" %%i in (` dir /b /a-d "%folder%" 2^>nul ^| find /c /v "" `) do (
set n=%%i
)
set order=!order%n%!
echo,
echo folder:     %folder%
echo file count: %n%
echo,
pushd %folder%
for /f "usebackq" %%a in (` dir /b .`) do (
for /f "tokens=2 delims=_" %%a in ("%%~na") do (
set idxScan=%%a
)
call :C_idx_scan_to_real order idxScan idxReal
echo ren  %%a  !idxReal!%%~xa
)
popd
echo,
echo, ----complete----
echo,
pause
exit/b
:C_idx_scan_to_real
setlocal
set order=!%1!
set idx=!%2!
set /a i=0
for %%a in ( %order% ) do (
set /a i+=1
if "!i!" == "%idx%" set idx=%%a
)
(
endlocal
set %3=%idx%
)
goto :eofCOPY

TOP

删除第25行 echo

TOP

回复 29# newswan


    好的 太感谢了  我试试

TOP

返回列表