【发布时间】:2019-02-14 14:03:30
【问题描述】:
有一些模糊或类似的问题,我试图尽我所能拼凑起来,但不确定我是否做得正确。
批处理文件的目标是查找文件名上的日期,创建一个文件夹,其中该文件名日期的月份和年份以“01”前缀指定,然后将其移动到那里。创建的文件夹的位置将比当前日志文件所在的位置高一级。如果文件夹名称已经存在,前缀为“01”但月份和年份不同,它将创建一个前缀为“ 02 ”,如果已经存在,那么它将继续创建一个前缀为“03 ”的文件夹,直到它没有找到任何具有它尝试创建的前缀的文件夹,该文件夹已经被占用并继续使用该未使用的前缀创建月份年份文件夹。
现在是代码,这就是我现在拥有的:
SETLOCAL ENABLEDELAYEDEXPANSION
for %%a in (*.log) do (
if exist *-10-2017*.log (
if exist 01* && not *01*.log (
set "iter="
set /p iter=01
set /a iter+=1
set f1=!%inter%" October"!
md "..\!f1!"
move "%%a" "!f1!"
) else (
md "01 October 2017" 2>nul
move "%%a" "01 October 2017"
)
)
)
这只是 2017 年 10 月,所以应该检查日志文件名的日期,如果文件名中的任何位置都有“-10-2017”,则在当前目录上方的目录中创建一个文件夹“2017 年 10 月 1 日”并移动在那里,假设不存在另一个名为 2017 年 5 月 1 日的文件夹或任何其他以名称 01 开头的文件夹(已创建的目标文件夹除外,在这种情况下,批处理只需将文件移动过来,而无需创建单独的文件夹相同的月份和年份,但前缀不同,这是不必要的,所以如果已经存在 2017 年 10 月 1 日,我不想要“2017 年 10 月 1 日”和“2017 年 10 月 2 日”文件夹),它应该很酷而且如果有,它会迭代直到找到一个未使用的数字,每次 +01,然后继续使用它作为前缀。
但这不起作用,因为我停在:
E:\SteamCMD\KFServer\UserLogs\11\unread\test>SETLOCALENABLEDELAYEDEXPANSION
&& was unexpected at this time.
我已经找到了一个工作件,这是我修改它的地方:
SETLOCAL ENABLEDELAYEDEXPANSION
for %%a in (*.log) do (
set f=%%a
set g=!f:~92,10!
md "!g!" 2>nul
move "%%a" "!g!"
)
)
但它只是将它们移动到它们的尊重日期文件夹中,我希望它们在月年命名约定中并且也向上一级,并且还将 01 前缀添加到文件夹名称中,以便以后排序和搜索。 ....另外一个问题是,如果另一个日志相同的月份和年份但不同的日期出现(例如 15-10-2017.log 和 10-10-2017 .log),当我可以按月年而不是单独的日子对日志进行分组时,它将在他们自己的文件夹中创建更多的混乱......
所以我有两个选择 - 把我的手臂举到空中,或者只使用工作批次,但手动执行额外的任务来完成它.....所以是的,最好我想让计算机以最少的努力为我完成了这一切,所以请帮助我或纠正我的代码并解释为什么它是错误的或者它必须是这样......
☺
亲切的问候, 新(oo)b 编码器
【问题讨论】:
-
您的
if语法错误(请参阅if ?)。没有&&或AND或类似的东西。另请注意:以0开头的数字被处理为八进制 - 而08不是有效的八进制数字(此外,以前导零递增不能像这样工作) -
看看this是否有帮助
-
@Stephan 谢谢你;检查和实施命名文件夹的前缀怎么样?编辑:那么如果你不能使用 && 或 AND...,你如何将语句连接在一起?那我如何用前导零递增呢?
-
@Stephan,在编辑代码以反映我的日志文件而不是 excel 文件工作所需的更改并添加提升一个级别并在那里创建文件夹而不是在同一目录级别......以及月份和年份之间的空格......如果我能做到这一点,我会正在考虑让它运行超过 10k 的日志文件......这意味着至少需要 11.57407407407407 天才能让计算机直接运行......
-
@Stephan 实际上留下了超过 100k 的日志文件,我的错误,因为我无法再编辑之前的评论,因为它已经超过 5 分钟了......所以那是 115.7407407407407 天......我有已经手动尝试通过其中大约 30k,甚至在尝试决定通过批处理脚本自动化它之前,只有超过 100k 仍然需要手动或使用批处理脚本自动排序......哦,天哪,这是一件苦差事!哈哈哈哈哈哈
标签: batch-file windows-7 batch-processing