Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何使用命令提示符删除除一个文件夹及其内容之外的所有文件夹?_Batch File_Cmd - Fatal编程技术网

Batch file 如何使用命令提示符删除除一个文件夹及其内容之外的所有文件夹?

Batch file 如何使用命令提示符删除除一个文件夹及其内容之外的所有文件夹?,batch-file,cmd,Batch File,Cmd,例如,假设我有一个文件夹abc,其中包含子文件夹1,2,3,4。现在我想删除除文件夹2及其内容之外的所有文件夹。我试过了 PUSHD (c:\abc\2) rd /s /q "C:\abc" 2>nul 但它也会删除2文件夹中的文件。我不想删除文件夹2的任何文件?以下代码应该可以工作: for /D %%D in ("C:\abc\*.*") do ( if /I not "%%~nxD"=="2" ( 2> nul rd /S /Q "%%~fD"

例如,假设我有一个文件夹
abc
,其中包含子文件夹
1
2
3
4
。现在我想删除除文件夹
2
及其内容之外的所有文件夹。我试过了

PUSHD (c:\abc\2) 
rd /s /q "C:\abc" 2>nul

但它也会删除
2
文件夹中的文件。我不想删除文件夹
2
的任何文件?

以下代码应该可以工作:

for /D %%D in ("C:\abc\*.*") do (
    if /I not "%%~nxD"=="2" (
        2> nul rd /S /Q "%%~fD"
    )
)
for/D
循环遍历目录
1
2
3
4


if
语句检查当前迭代目录的名称是否为
2

在命令提示窗口中键入
pushd/?
后阅读帮助文本;你会发现
pushd
将给定的目录更改为当前目录,而不是其他任何内容…@aschipfl这个想法可能是“当我在该文件夹中时,它不能被删除”@Stephan,所以你也必须在所有子目录中并打开所有文件?我说这可能是个想法,而不是它会按预期工作:P是的,要让它工作,你必须“也在所有子目录中并打开所有文件”