Windows 批处理脚本以删除除“以外的所有文件夹”;以“开始”;
我有一个包含多个子文件夹的文件夹。结构如下:Windows 批处理脚本以删除除“以外的所有文件夹”;以“开始”;,windows,batch-file,cmd,directory,rmdir,Windows,Batch File,Cmd,Directory,Rmdir,我有一个包含多个子文件夹的文件夹。结构如下: C:\foo C:\foo\web.foo C:\foo\web.bar C:\foo\win.foo C:\foo\win.bar C:\foo\mobile.foo C:\foo\mobile.bar 我有时希望删除包含以下批处理脚本文件的文件夹: rmdir C:\foo/s/q 在这里,完全删除整个文件夹C:\foo并不重要 但是现在我只想删除C:\foo及其包含文件的子文件夹,这些文件不以“web”开头。 您对此有什么好的解决方案吗?
- C:\foo
- C:\foo\web.foo
- C:\foo\web.bar
- C:\foo\win.foo
- C:\foo\win.bar
- C:\foo\mobile.foo
- C:\foo\mobile.bar
rmdir C:\foo/s/q
在这里,完全删除整个文件夹C:\foo并不重要
但是现在我只想删除C:\foo及其包含文件的子文件夹,这些文件不以“web”开头。
您对此有什么好的解决方案吗?以下内容可以解决问题,请注意,这是一个使用当前目录的批处理文件:
@echo关闭
对于/F“delims=“%%D in('dir/B/AD^ | findstr/V“^web.”)do(
回音rmdir%%D/s/q
)
如果可以,请删除rmdir
前面的echo
由于/AD
,dir命令只列出目录名,由于/B
,因此使用简单的名称输出。要在开头搜索,请使用findstr
和/V
。对于否定,请使用^
。此外,管道符号需要转义^ |
如果您想要使用参数的动态批处理脚本,可以使用以下命令,通过
batchname.bat“C:\foo”web调用它。
(如果可以,请删除rmdir
前面的echo
):
@echo关闭
设置为0
如果[%1]=[]设置“INVARGS=1”
如果[%2]=[]设置“INVARGS=1”
如果%s%==1(
回显%0^^
转到eof
)
设置“文件夹=%1%”
设置“前缀=%2%”
pushd“%folder%”
应删除文件夹的回显列表:
对于/F“delims=“%%D in('dir/B/AD^ | findstr/v“^%prefix%”)do(
回显“%cd%\%%%D”
)
邻苯二胺
:选择
回声。
设置/P“c=是否确实要继续[Y/N]?”
如果/I“%c%”等于“Y”转到“是”
如果/I“%c%”等于“N”转到eof
后藤:选择
:是的
回声。
pushd“%folder%”
对于/F“delims=“%%D in('dir/B/AD^ | findstr/v“^%prefix%”)do(
回音rmdir%%D/s/q
)
邻苯二胺
:eof
以下操作应该可以完成,请注意,这是一个使用当前目录的批处理文件:
@echo关闭
对于/F“delims=“%%D in('dir/B/AD^ | findstr/V“^web.”)do(
回音rmdir%%D/s/q
)
如果可以,请删除rmdir
前面的echo
由于/AD
,dir命令只列出目录名,由于/B
,因此使用简单的名称输出。要在开头搜索,请使用findstr
和/V
。对于否定,请使用^
。此外,管道符号需要转义^ |
如果您想要使用参数的动态批处理脚本,可以使用以下命令,通过
batchname.bat“C:\foo”web调用它。
(如果可以,请删除rmdir
前面的echo
):
@echo关闭
设置为0
如果[%1]=[]设置“INVARGS=1”
如果[%2]=[]设置“INVARGS=1”
如果%s%==1(
回显%0^^
转到eof
)
设置“文件夹=%1%”
设置“前缀=%2%”
pushd“%folder%”
应删除文件夹的回显列表:
对于/F“delims=“%%D in('dir/B/AD^ | findstr/v“^%prefix%”)do(
回显“%cd%\%%%D”
)
邻苯二胺
:选择
回声。
设置/P“c=是否确实要继续[Y/N]?”
如果/I“%c%”等于“Y”转到“是”
如果/I“%c%”等于“N”转到eof
后藤:选择
:是的
回声。
pushd“%folder%”
对于/F“delims=“%%D in('dir/B/AD^ | findstr/v“^%prefix%”)do(
回音rmdir%%D/s/q
)
邻苯二胺
:eof
这将删除所有以web开头的文件。
@echo关闭
setlocal EnableDelayedExpansion
对于('dir/b/s')中的/f%%f,请执行以下操作(
设置“name=%%~nF”
如果/i不是“!名称:~0,4!”==“web”(
rm!名字!
)
)
这将删除所有以web开头的文件。
@echo关闭
setlocal EnableDelayedExpansion
对于('dir/b/s')中的/f%%f,请执行以下操作(
设置“name=%%~nF”
如果/i不是“!名称:~0,4!”==“web”(
rm!名字!
)
)