批处理文件迭代遍历文件夹并根据文件名的一部分做出决定



我需要一些帮助来理解这个问题。

300-1C6SHFHT5MN654321-08030010.txt
300-1C6SHFHT5MN654321-08030015.txt
300-1C6HJTFM4ML223344-07040020.txt
300-1C6HJTFM4ML223344-07040030.txt
300-2C4RC1DG2LR111332-05010025.txt
300-2C4RC1DG2LR111332-05010020.txt
300-2C4RC1DG2LR111332-05010010.txt
300-2C4RC1DG2LR111332-05010010.txt
300-2C4RC1DG2LR111332-05010010.txt
300-2C4RC1DG2LR111332-05010010.txt
300-2C4RC1DG2LR111332-05010010.txt
300- 2c4rc1dg2lr111332 - 0501005 .txt
300-2C4RC1DG2LR111332-05010010.txt
300-2C4RC1DG2LR111332-05010010.txt
300-2C4RC1DG2LR111332-05010005.txt
300-1C6RT7LT6MS544775-01010110.txt
300-1C6RT7LT6MS544775-01010115.txt
300-1C6RT7LT6MS544775-01010120.txt

想象一下,上面所有的。txt文件都杂乱地放在一个文件夹中这个文件夹里可能有成千上万个文件。

我正试图找出按VIN排序和移动文件的最佳方法我想我可以遍历文件夹,将所有相似的vin分组,然后取最小的

考虑查看每个文件,向左看(22),然后查看组,并移动(最小/最低)文件号(last8)...然后移动到下一个VIN分组

所以,也许有一个批处理文件看看四个"300-1C6SHFHT5MN654321-"文件,然后移动"08030010.txt"转到处理文件夹.bat将计划每五分钟运行一次

在上面的示例中,将在第一次运行时移动以下四个文件:
300-1C6SHFHT5MN654321-08030010.txt
300-1C6HJTFM4ML223344-07040010.txt
300-2C4RC1DG2LR111332-05010005.txt
300-1C6RT7LT6MS544775-01010105.txt

在五分钟内,第二次运行将移动这些:
300-1C6SHFHT5MN654321-08030015.txt
300-1C6HJTFM4ML223344-07040020.txt
300-2C4RC1DG2LR111332-05010010.txt
300-1C6RT7LT6MS544775-01010110.txt

任何帮助都是感激的。谢谢!
第一次海报。我喜欢这个网站…这些年来帮了我很多忙

注意:我不能使用文件日期/时间戳。我需要每个VIN的最小文件创建数

我想我明白了…

@echo off
setlocal EnableExtensions enableDelayedExpansion
set "StageFLD=C:UsersNEWMANALFREDEDocumentsBatchScripts300dump"
set "ProcessFLD=C:UsersNEWMANALFREDEDocumentsBatchScripts300process"
set "theFileName=nothing"
for /R %StageFLD% %%A in (*.txt) do (
for /F "eol=| tokens=2* delims=-" %%B in ("%%~nA") do (
set "VIN=%%B"
set "UpdateTime=%%C"
setlocal EnableDelayedExpansion
if "!VIN:~-1!" == " " set "VIN=!VIN:~0,-1!"
if defined UpdateTime if "!UpdateTime:~0,1!" == " " set "UpdateTime=!UpdateTime:~1!"
echo VIN=!VIN!
if defined UpdateTime (echo UpdateTime=!UpdateTime!) else echo %%~na has no UpdateTime.
if "!VIN!"=="!theFileName!" (echo "same as last") else MOVE /Y %%A %ProcessFLD%%%~nxA
endlocal
)
set "theFileName=!VIN!"
)
endlocal

最新更新