Board logo

标题: [文件操作] 请教BAT脚本文件批量删除的问题 [打印本页]

作者: xuxianking    时间: 2021-3-28 21:50     标题: 请教BAT脚本文件批量删除的问题

各位好, 在写一个批处理的时候,遇到一个问题,

需要达到的效果是:删除C盘users目录下超过三十天为使用的文件夹(特定用户的文件夹),但不删除当前运行这个bat脚本用户的文件夹,因为脚本是在域控环境中运行的,所以现在

有两个情况1.一个域控中的电脑用户文件都有一个特定的标识都带有 “_v” ,2.另外一个域控中的电脑没有规律,一般以姓名全称来命名。

下面是我写的,可以解决第一种情况的问题,但是第二种情况需要怎么删除,没有什么思路,还请大家给点建议, 谢谢
  1. @echo on
  2. cd C:\Users\
  3. for /d %%G in ("*_v") do rd /s /q "%%~G"
复制代码

作者: Batcher    时间: 2021-3-29 10:29

回复 1# xuxianking
  1. @echo off
  2. if exist "%SystemDrive%\Users" (
  3.     pushd "%SystemDrive%\Users"
  4. ) else (
  5.     goto :eof
  6. )
  7. for /f "delims=" %%i in ('dir /b /ad ^| findstr /r /v /c:"^All Users$" /c:"^Default User$" /c:"^Default$" /c:"^Administrator$" /c:"^Public$"') do (
  8.     echo rd /s /q "%%i"
  9. )
  10. popd
  11. pause
复制代码

作者: xuxianking    时间: 2021-3-29 11:04

回复 2# Batcher

感谢, 我先试试,再请教一下下面这一行的命令

“for /f "delims=" %%i in ('dir /b /ad ^| findstr /r /v /c:"^All Users$" /c:"^Default User$" /c:"^Default$" /c:"^Administrator$" /c:"^Public$"') do (   ”  

这一行的意思是排除掉“c:"^All Users$" /c:"^Default User$" /c:"^Default$" /c:"^Administrator$" /c:"^Public”这几个文件夹吗? 之前手动删除文件的时候,测试过如果“c:"^Default User$" /c:"^Default$"/c:"^Public$" ” 被删除, 会影响后续用户登录
作者: Batcher    时间: 2021-3-29 11:20

回复 3# xuxianking


    是的,就是排除掉那几个文件夹。
作者: xuxianking    时间: 2021-4-15 12:47

回复 4# Batcher

测试的结果是这样的,能找到文件夹, 但是无法删除。

c:\>deltest.bat

c:\>if exist "C:\Users" (pushd "C:\Users" )  else (goto :eof )

C:\Users>for /F "delims=" %i in ('dir /b /ad | findstr /r /v /c:"^All Users$" /c:"^Default User$" /c:"^Default$" /c:"^Administrator$" /c:"^Public$"') do (echo rd /s /q "%i" )

C:\Users>(echo rd /s /q "gongkai_v" )
rd /s /q "gongkai_v"

C:\Users>(echo rd /s /q "lujiayao_v" )
rd /s /q "lujiayao_v"

C:\Users>(echo rd /s /q "sz-luoxiaojia" )
rd /s /q "sz-luoxiaojia"

C:\Users>(echo rd /s /q "szadmin" )
rd /s /q "szadmin"

C:\Users>(echo rd /s /q "szuser" )
rd /s /q "szuser"

C:\Users>(echo rd /s /q "TEMP" )
rd /s /q "TEMP"

C:\Users>(echo rd /s /q "test" )
rd /s /q "test"

C:\Users>(echo rd /s /q "yangziwei_v" )
rd /s /q "yangziwei_v"

C:\Users>(echo rd /s /q "zhaofan5_v" )
rd /s /q "zhaofan5_v"

C:\Users>popd

c:\>pause
请按任意键继续. . .
作者: Batcher    时间: 2021-4-15 13:46

回复 5# xuxianking


    2楼代码第8行的echo删掉
作者: xuxianking    时间: 2021-4-15 13:52

回复 2# Batcher



找到原因了 删除掉“echo rd /s /q”中的“echo” 就可以了,如果排除当前用户的文件夹?如果我要删30天之前的用户,需要添加什么命令?




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2