批处理文件更改

时间:2016-10-05 10:19:14

标签: windows batch-file cmd

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

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:\数据\ SalesArea \公司1 \ Foldera
  • d:\数据\ SalesArea \公司1 \ FolderB中
  • d:\数据\ SalesArea \公司1 \ Folderc
  • d:\数据\ SalesArea \ Company2的\ Foldera
  • d:\数据\ SalesArea \ Company2的\ FolderB中
  • d:\数据\ SalesArea \ Company2的\ Folderc
  • d:\数据\ SalesArea \公司3 \ Foldera
  • d:\数据\ SalesArea \公司3 \ FolderB中
  • d:\数据\ SalesArea \公司3 \ Folderc

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

我猜测代码需要某种类型的循环/如果逻辑添加到它但是我不足以知道改变它的内容或方法。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

快速解决方案是使用findstr查找directorys。 但是这个解决方案应该非常刻板地使用,如果在你的路径中你有搜索到的名字它将匹配它并删除它的文件。

如果输出正确并且只显示相关文件夹然后你可以使用它(删除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