【问题标题】:I want to check the contents off multiple folders and logs the results with one batch file我想检查多个文件夹的内容并用一个批处理文件记录结果
【发布时间】:2013-05-08 12:22:44
【问题描述】:

我有一个正在运行的程序,它可以批量处理一堆文档并将它们放在 DMS 中。当程序完成处理每个文档后,它会将其放置在另一个文件夹中。然后可以将其放置在名为successed 的子文件夹或名为failed 的子文件夹中。未成功上传到 DMS 的文档放在 failed 子文件夹中。这个过程每天都在重复,因此每天都会创建两个新文件夹,分别命名为“importresults_%datetime\succeeded”和“importresults_%datetime\failed”。

我想创建另一个批处理文件,每天检查新创建的子文件夹“importresults_%datetime\failed”的内容。对于其中的每个文档,我希望批处理文件记录它。

我尝试过这样的方法来检查某个文件夹中是否存在文件以开始,但这不起作用。

CheckFileExist.bat >> C:\CFE_log.txt

for /f %%i in C:\Dfolder do (

IF not EXIST echo %%i >> C:\CFE_log.txt
pause

这似乎在日志文件中不断循环。

【问题讨论】:

  • EXIST 之后你需要一些东西。文件名或包含文件名的变量。
  • 另外,您希望将 for 更改为:for /f %%i in ('dir C:\Dfolder /b /a-d') do ( 如果 Dfolder 包含您还希望处理的子文件夹,则将 /s 添加到 dir 开关。
  • 我像马特建议的那样更改了 for 语句。我还通过添加 %%i 或 *.txt 更改了 EXIST 语句。两者都还没有成功。
  • %datetime有什么格式?

标签: file logging batch-file directory


【解决方案1】:

我想创建另一个批处理文件,每天检查新创建的子文件夹"importresults_%datetime\failed" 的内容。对于其中的每个文档,我希望批处理文件记录它。

批次

for /f "delims=" %%A in ('dir "C:\Dfolder" /a-d /b') do (
   echo %%A>>C:\CFE_log.txt
)
pause

只需将“C:\Dfolder”更改为您要列出的任何目录。

什么?

这行CheckFileExist.bat >> C:\CFE_log.txt的目的是什么?

【讨论】:

    【解决方案2】:

    如果您从主文件夹运行它,如果文件夹按名称排序,它将选择最新的文件夹,然后创建文件列表(在名为 name of folder - failed files.txt 的文件中)并将其放在您启动的同一文件夹中这个批处理文件来自。

    @echo off
    for /f "delims=" %%a in ('dir /ad /b /s ^|find /i "failed" ^|sort') do (
    echo found "%%a"
    set "folder=%%a"
    set "name="%%~nxa"
    )
    echo setting variable to "%folder%"
    echo getting list of failed files into "%name% - failed files.txt"
    dir "%folder%" /b /a-d >"%name% - failed files.txt"
    echo done.
    

    【讨论】:

      猜你喜欢
      • 2016-09-10
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 2023-02-01
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 2020-07-15
      相关资源
      最近更新 更多