2016-10-05 193 views
1

早上所有。 我當前在批處理文件中運行以下代碼,該文件列出並刪除特定位置中的項目。它將路徑和文件名輸出到一個文件,然後通過電子郵件發送給我,以便我可以存儲更新後的版本以進行審覈。批處理文件更改

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 \公司1 \ Foldera
  • d:\ DATA \ 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。隨着公司被添加或刪除的可能性每週都在運行。

我猜的代碼需要一些類型的循環/如果邏輯添加到它可是我沒有足夠的profficient知道什麼或如何去改變它。

任何援助greely表示讚賞。

回答

1

快速解決方案將使用findstr找到導演。 但是這種解決方案建議立即進行刪除,如果在你的pathes你所搜索姓名它將匹配並刪除它的文件也非常carrefully使用。

如果輸出正確且僅顯示相關文件夾,則可以使用它(取出ECHO),您可以測試它並看到輸出(我在DEL之前放置回聲)。

@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