大家好,
我正在努力为我已经使用了一段时间的批处理文件写一小部分内容。首先,这里是我要处理的一些示例文件名:
output.log, output.log.1, output.log.2, ..., outlput.log.199
输入文件集可能只包含上述文件中的一个或几个(始终按所示顺序排列,最新,最后一个)或所有200个文件。
批处理文件用于对这些文件执行多项操作,例如将它们复制到新目录中,或创建参数列表以将其传递到另一个命令。一般来说,我的工作做得很好,它当时做了我想要的,然而,处理潜在文件集中的所有200个文件是耗时的。我现在要做的是限制进程文件的数量,仅提取第一个,比如20个文件,或者(如果少于20个文件),全部。
我遇到的问题是我使用的FOR
循环按名称顺序循环文件,而不是日期/时间顺序。因此,如果我在20次迭代后停止,我最终得到:
output.log, output.log.1, output.log.10, outlput.log.100, outlput.log.101, ...
我需要能够按日期/时间顺序循环遍历文件集(最新的第一个)。我不知道日期范围是什么,或者文件是否按特定时间间隔,只是日志文件将始终按照第一个列表。
setlocal EnableDelayedExpansion
Set SnapDir=C:\Snaps\
Set SupportLog=unified_support.log
Set LogDir=\var\log
Set ParsedLogDir=\var\log\parsed
set PARAMS=
set /A NumberSupportFiles=20
Set /A StartSupportCount=0
if [%1]==[] goto :eof
:loop
rem Create a Parameter list of all the Log files, Copy File then stop after a set number of interations
for %%A in ("%SnapDir%%~n1%LogDir%\%SupportLog%*") do (
set PARAMS=!PARAMS! "%%A"
copy %%A "%SnapDir%%~n1%ParsedLogDir%\"
set /A StartSupportCount+=1
if !StartSupportCount! EQU %NumberSupportFiles% goto :jump
)
:jump
pause
如前所述,这种方法有效,它循环遍历文件集中的前20个文件,但文件顺序是按名称而不是日期/时间。
从我到目前为止所读到的内容来看,任何日期/时间操作似乎都需要一个精确的参考点或特定的分隔符,并且在循环之前我无法看到订购该集合的方法。这可能吗?
答案 0 :(得分:2)
你差不多完成了,你只需要用dir /B A:-D /O:-D
来替换@echo off
setlocal EnableExtensions EnableDelayedExpansion
Set "SnapDir=C:\Snaps\"
Set "SupportLog=unified_support.log"
Set "LogDir=\var\log"
Set "ParsedLogDir=\var\log\parsed"
set "PARAMS="
set /A NumberSupportFiles=20
Set /A StartSupportCount=0
if "%~1"=="" goto :EOF
:LOOP
rem Create a Parameter list of all the Log files,
rem Copy File then stop after a set number of interations
for /F "eol=| delims=" %%A in ('
dir /B /A:-D /O:-D "%SnapDir%%~n1%LogDir%\%SupportLog%*"
') do (
set "PARAMS=!PARAMS! "%%~A""
copy "%SnapDir%%~n1%LogDir%\%%~A" "%SnapDir%%~n1%ParsedLogDir%\"
set /A StartSupportCount+=1
if !StartSupportCount! EQU %NumberSupportFiles% goto :JUMP
)
:JUMP
pause
endlocal
exit /B
循环,它解析extensions [rnd]
to makeNW-BA
clear-all
let new-edges 4
let popn 25
create-turtles new-edges [ setxy random-xcor random-ycor ]
ask turtles [ create-links-with other turtles with [not link-neighbor? myself] ]
repeat popn - count turtles
[ let targets rnd:weighted-n-of new-edges turtles [ count my-links ]
create-turtles 1
[ setxy random-xcor random-ycor
create-links-with targets
]
]
end
的输出,它构成按修改日期排序的文件列表。降序(最新的第一个):
let targets rnd:weighted-n-of degree turtles [ count my-links ]