[英]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.