所以我要做的就是进入以下目录中的每个文件夹
"C:\Documents and Settings\"
并且对于其中的每个文件夹,无论名称如何,都要检查此路径是否存在
"C:\Documents and Settings\*\Local Settings\Application Data\CSMRpt\"
如果它存在则删除该Director内的所有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%
答案 0 :(得分:3)
试试这个。
@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%"
答案 1 :(得分:2)
这里有一些错误,你不能在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