通过 FOR 从 BATCH 文件按日期排序

Posted

技术标签:

【中文标题】通过 FOR 从 BATCH 文件按日期排序【英文标题】:Sort Datewise through FOR from BATCH file 【发布时间】:2018-04-11 08:01:47 【问题描述】:

要求是我有 1 个文件夹,在那个文件夹中有很多 txt 文件,每天有 100 多个文件登陆和处理,现在我想监控有多少文件存在于当我为今天的日期运行 bat 文件时的文件夹。

以下是我一直在使用的脚本,但它似乎可以正常工作,但会获取所有文档而不是今天的文档

@echo 关闭 setlocal enabledelayedexpansion 设置 c1=0 对于 /f "tokens=*" %%x in ('dir /s /a /b "D:\Flow\Flow1\Flow2\Flow3\KEN*.txt" 2^>nul') 设置 /a c1+= 1 回声。肯,!c5!

【问题讨论】:

试试dir /s /a "D:\Flow\Flow1\Flow2\Flow3\*.txt" 2>NUL | find /C "%date%" 给我错误,不能正常工作 请edit您的问题并添加minimal reproducible example,而不是无用的“给我错误”、“无法正常工作”或“ 根本不起作用”的发音。寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述(和错误代码/消息)的问题对其他读者没有用处。 @RishabhBhargav,您完全没有回答由于您对我的回答的开场评论而提出的问题。在您的问题中,请尝试解释 I don't think i can create a robocopy in the Production, this is working in UAT but not an option for me 应该是什么意思? ProductionUAT 是什么?是什么阻止你使用RoboCopy 命令? 【参考方案1】:

这是你的意思吗?


从命令提示符:

(For /F %A In ('Dir/S/W/A-D-S-L "D:\Flow\Flow1\Flow2\Flow3\NGR*.txt" 2^>Nul') Do @Call Set "fC=%dC%"&Set "dC=%A")&Call Echo(%fC%

来自批处理文件:

@Echo Off
SetLocal EnableDelayedExpansion
Set "dC="
For /F %%A In ('Dir/S/W/A-D-S-L "D:\Flow\Flow1\Flow2\Flow3\NGR*.txt" 2^>Nul'
) Do Set "fC=!dC!"&Set "dC=%%A"
Echo %fC%
Pause

您也可以选择在5 上添加%DATE% @ %TIME%

【讨论】:

我不认为我可以在生产中创建一个 robocopy,这在 UAT 中工作但对我来说不是一个选项 如果你可以给我任何其他选择 如果您有与您的问题相关的重要信息,我建议您edit您的问题包含它! 在重新阅读您的问题并看到完全不同的任务后,我重新创建了上面的代码。现在这是一个更接近的解决方案吗? 我已经更改了我的问题并清除了我的查询,希望这可以帮助您理解并帮助我解决查询【参考方案2】:

查找“今天创建”文件的便捷命令是forfiles 命令(不经常使用,可能是因为其反直觉的语法和一些奇怪的地方)。通过管道将其发送到 find /c 以获取计数,在其周围放置一个 for /f 即可完成:

set "days=0"
REM 0 for "created zero days ago" = "created today"
set count=0
REM for /f %%x in ('forfiles /D %days% /P "D:\Flow\Flow1\Flow2\Flow" /m "KEN*.txt" ^|find /i /c ".txt"') do set count=%%x
echo KEN,%count%

days 设置为3 以获取超过三天(今天和前两天)的文件 - 可能在星期一有用。

(“零天”的意思是“今天”(不是过去的 24 小时,而是从 00:00 开始)——这只是其中一个奇怪的地方)

【讨论】:

以上是关于通过 FOR 从 BATCH 文件按日期排序的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 性能优化:按日期时间字段排序

Bitbucket REST Api:如何通过调用 rest api 按日期 desc 对所有分支进行排序?

在猫鼬中,我如何按日期排序? (node.js)

从照片库加载图像并按日期排序的内存问题

如何按创建日期对文件管理器数组进行排序

Spring Batch - 如何将字符串从文件转换为日期?