【问题标题】:Batch file alteration批处理文件修改
【发布时间】:2016-10-05 10:19:14
【问题描述】:

早上好。 我目前在一个批处理文件中运行以下代码,该文件列出和删除特定位置的项目。它将路径和文件名输出到一个文件,然后通过电子邮件发送给我,以便我可以出于审核原因存储更新版本。

forfiles -p "D:\Data\Folder1" -s -m *.* -d -7 -c "cmd /c echo %DATE% - %TIME% = @path" >> "C:\Deleted Files.txt"**

forfiles -p "D:\Data\Folder1" -s -m *.* -d -7 -c "cmd /c del /Q @file"

然后批处理文件中有 3 个条目可根据需要用于其他文件夹。

我现在必须更改代码并为不同的位置创建一个新文件,如下所示:

  • D:\Data\SalesArea\Company1\Foldera
  • D:\Data\SalesArea\Company1\Folderb
  • D:\Data\SalesArea\Company1\Folderc
  • D:\Data\SalesArea\Company2\Foldera
  • D:\Data\SalesArea\Company2\Folderb
  • D:\Data\SalesArea\Company2\Folderc
  • D:\Data\SalesArea\Company3\Foldera
  • D:\Data\SalesArea\Company3\Folderb
  • D:\Data\SalesArea\Company3\Folderc

我需要能够搜索每个公司的特定子文件夹并清空所述文件夹。例如,Folderb 是唯一需要清理的。它需要检查每个公司的 Folderb。每周都有可能在此期间添加或删除公司。

我猜代码需要添加某种类型的循环/if 逻辑,但是我不够熟练,不知道要更改什么或如何更改它。

非常感谢任何帮助。

【问题讨论】:

    标签: windows batch-file cmd


    【解决方案1】:

    一个快速的解决方案是使用findstr 来查找目录。 但是,如果在您的路径中有搜索到的名称,则应该非常谨慎地使用此解决方案。它会匹配它并删除它的文件。

    如果输出正确并且只显示相关文件夹,您可以对其进行测试并查看输出(我在DEL 之前放置了一个回显)然后您可以使用它(删除ECHO)。

    @echo off
    
    set "$startingDir=D:\Data\SalesArea"
    set /p "$dir=Enter the name of the dir to clean : "
    
    pushd "%$StartingDir%"
    for /d /r %%a in (*) do echo %%a | findstr /i "%$dir%" >nul && echo del "%%a\*.*"
    popd
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多