1

だから私がやろうとしているのは、次のディレクトリ内のすべてのフォルダーに移動することです

"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%
4

2 に答える 2

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%"
于 2013-02-22T17:05:06.350 に答える
2

ここでいくつか問題があります。set=コマンドの前後にスペースを入れることgotoはできません。 、%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%"

ループを1行にしたくない場合は、これ可能です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
于 2013-02-22T17:28:57.520 に答える