簡體   English   中英

批量刪除路徑中帶有通配符的文件夾中的所有文件

[英]Batch to delete all files in a folder with a wildcard in the path

所以我想做的是進入以下目錄中的每個文件夾

"C:\Documents and Settings\"

對於其中的每個文件夾,無論其名稱如何,請檢查此路徑是否存在

"C:\Documents and Settings\*\Local Settings\Application Data\CSMRpt\"

如果存在,則刪除該目錄中的所有txt文件;如果該路徑不存在,則不執行任何操作,然后移至“ C:\\ Documents and Settings \\”中的下一個文件夾

到目前為止,這是我想出的:

set PATH = "\Local Settings\Application Data\CSMRpt\"
set FILETYPE = "*.txt"
for /d %%g in ("C:\Documents and Settings\*") do if exist %%g%PATH% goto pathexists
:pathexists
del %%g%PATH%%FILETYPE%

嘗試這個。

@echo off
setlocal
set cwd=%CD%
set p=Local Settings\Application Data\CSMRpt
cd /d "c:\Documents and Settings\"
for /d %%I in (*) do (
    if exist "%%I\%p%\" (
        pushd "%%I\%p%\"
        del /q *.txt
        popd
    )
)
:: (change back to original directory)
cd /d "%cwd%"

這里有幾處錯誤,您不能在set命令中的=周圍有空格,使用goto不會傳遞變量(但是您可以使用call並將其作為參數傳遞),您不需要在引號周圍盡管每個變量%PATH%都可以重置,但您不應對其進行設置,因為它是環境變量。

更正的代碼:

set THEPATH=\Local Settings\Application Data\CSMRpt\
set FILETYPE=*.txt
for /d %%g in ("C:\Documents and Settings\*") do if exist "%%g%THEPATH%." del "%%g%THEPATH%%FILETYPE%"

如果您真的不希望for循環成為一行,那么也可以這樣做

set THEPATH=\Local Settings\Application Data\CSMRpt\
set FILETYPE=*.txt
for /d %%g in ("C:\Documents and Settings\*") do if exist "%%g%THEPATH%." call :deltxtfiles "%%~g"

exit /B

:deltxtfiles
del "%~1%THEPATH%%FILETYPE%"
goto:eof

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM