我没有丝毫的线索,但是这个文件最近停止了运作。 也许我改变了一些东西而不记得。
该脚本旨在纠正“数据库”中文件夹的编号结构,其中数字从最新到最早(从0开始)。数据库中的文件夹结构'只需要与以下内容类似地命名:" 1 - 2_12_2017"或" 34 - 1_14_2017"。
经过一些故障排除后,我发现 set / a cnt =!cnt!+1 似乎没有增加!cnt!。或者更确切地说,当第一个&#39; <#em> 树完成并且您点击:循环时,!cnt!仍然等于-1,这会导致下一部分在处理完第一个文件夹后退出。
不知道我做错了什么,但我希望你们中的一个能够弄明白。 就目前而言,我没有想法。
@echo off
setlocal enabledelayedexpansion
set "dbpth=C:\Users\Script Keeper\Desktop\backups\database"
set cnt=-1
cd %dbpth%
set "fy=unset"
set "fm=unset"
set "fd=unset"
for /f "delims=" %%A in ('dir /b /a:d /o:-n "%dbpth%\*"') do (
title Prunning Correction - %%A
for /f "delims=1234567890-_ " %%B in ("%%A") do (
if "%%B" == "" (
set /a cnt=!cnt!+1
set "str=%%A"
set "str=!str:~-10!"
set "str=!str: =!"
set "str=!str:-=!"
set "ys=unset"
set "ms=unset"
set "ds=unset"
for /f "tokens=1-3 delims=_" %%F in ("!str!") do (
if !ms! == unset (
set "ms=%%F"
)
if !ds! == unset (
set "ds=%%G"
)
if !ys! == unset (
set "ys=%%H"
)
)
if !fy! == unset (
set "fy=!ys!"
set "fd=!ds!"
set "fm=!ms!"
)
if not !fy! == unset (
if !ys! leq !fy! (
set "fy=!ys!"
if !ms! leq !fm! (
set "fm=!ms!"
if !ds! leq !fd! (
set "fd=!ds!"
)
)
)
)
)
)
)
:loop
for /f "delims=" %%G in ('dir /b /a:d /o:-n "%dbpth%\*"') do (
title Prunning Correction - %%G
set "str=%%G"
set "str=!str:~-10!"
set "str=!str: =!"
set "str=!str:-=!"
if !str! == !fm!_!fd!_!fy! (
ren "%dbpth%\%%G" "!cnt! - !fm!_!fd!_!fy!"
set /a cnt=!cnt!-1
)
)
set /a fd=!fd!+1
if !fd! gtr 31 (
set /a fm=!fm!+1
set fd=1
if !fm! gtr 12 (
set /a fy=!fy!+1
set fm=1
)
)
title !cnt! - !fm!_!fd!_!fy!
if !cnt! geq 0 (goto loop)
endlocal
exit