2013-02-22 1 views
1

Так что я пытаюсь сделать, это зайти в каждую папку в директорииПакетная удалить все файлы в папке с групповым символом в пути

"C:\Documents and Settings\" 

и для каждой папки в нем, независимо от того, имя, проверьте, если этот путь существует

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

, если он существует, а затем удалить все файлы .txt в внутри этого режиссера, не если путь не существует, то ничего не делать и перейти к следующей папке внутри «C: \ Documents и настройки \ "

Это то, что я придумал до сих пор:

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% 

ответ

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

Вы можете иметь 'диск изменения cd' а также с 'cd/D fullpath' –

+0

@PatrickMeinecke - Спасибо. Я выполнил ваше предложение. – rojo

+0

Спасибо, что работает отлично! – SOfanatic

2

пару вещей здесь не так, вы не можете иметь пробелы вокруг = в команде набора, используя goto не прошел бы переменную (можно использовать, однако вызов вместо и передать его в качестве аргумента) вам не нужны кавычки вокруг каждой переменной, но вы можете сбросить ее, вы не должны делать что-то подобное, так как это переменная среды.

Исправленный код:

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 

 Смежные вопросы

  • Нет связанных вопросов^_^