Windows 中的 RD 命令排除项

Windows 中的 RD 命令排除项

我使用以下脚本在某些任务完成后清除一组文件夹。

@echo off
setlocal
:PROMPT
SET /P AREYOUSURE=Clearing folder! Are you sure? (Y/[N])?
IF /I "%AREYOUSURE%" NEQ "Y" GOTO END

echo

cd /d "P:\folder1\"
rd /s /q . 2>nul
cd /d "P:\folder2\"
rd /s /q . 2>nul
cd /d "P:\folder3\"
rd /s /q . 2>nul

:END
endlocal

问题是,、folder1等内部有标识符文件和子目录folder2需要保留在那里。

例如,有一个目录P:\folder1\.identifiersubfolder,其路径为,其中有一个folder1名为P:\folder1\identifier.file

这些文件和目录名称已设置,因此我不需要通配符。我需要一种方法来简单地设置要排除的文件和目录名称。我不知道 rd/rmdir 是否可以做到这一点。如果有其他命令可以使用,我愿意接受建议。

谢谢!

答案1

我可以通过Remove-Item –path P:\Testing\folder1\ -Recurse在 PowerShell 中使用来解决此问题,并通过我的旧批处理文件调用它,而不是rd

我只是将要排除的项目设置为隐藏,而没有-Force在 PS 脚本中使用 来阻止它删除这些项目。如果不使用-Force,脚本就无权删除隐藏的项目。我的程序默认隐藏这些文件,因此在这种情况下可以正常工作。

谢谢你的建议。:)

答案2

这是针对您的问题的批量解决方案。

@Echo Off
SetLocal
:Prompt
Set /P AreYouSure=Clearing Folder! Are you sure? (Y/[N])?
If /I "%AreYouSure%" NEq "Y" GoTo End

Echo

ChDir /D "P:\Folder1\"
XCopy /E P:\Folder1\.IdentifierSubFolder\ P:\
Copy /Y P:\Folder1\Identifier.File P:\
RmDir /S /Q . 2>Nul
XCopy /E P:\.IdentifierSubFolder\ P:\Folder1\
RmDir /S /Q P:\.IdentifierSubFolder\
Copy /Y P:\Identifier.File P:\Folder1\
Erase /Q P:\Identifier.File

ChDir /D "P:\Folder2\"
XCopy /E P:\Folder2\.IdentifierSubFolder\ P:\
Copy /Y P:\Folder2\Identifier.File P:\
RmDir /S /Q . 2>Nul
XCopy /E P:\.IdentifierSubFolder\ P:\Folder2\
RmDir /S /Q P:\.IdentifierSubFolder\
Copy /Y P:\Identifier.File P:\Folder2\
Erase /Q P:\Identifier.File

ChDir /D "P:\Folder3\"
XCopy /E P:\Folder3\.IdentifierSubFolder\ P:\
Copy /Y P:\Folder3\Identifier.File P:\
RmDir /S /Q . 2>Nul
XCopy /E P:\.IdentifierSubFolder\ P:\Folder3\
RmDir /S /Q P:\.IdentifierSubFolder\
Copy /Y P:\Identifier.File P:\Folder3\
Erase /Q P:\Identifier.File

:End
EndLocal

相关内容