[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 请教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"
复制代码

回复 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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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$" ” 被删除, 会影响后续用户登录

TOP

回复 3# xuxianking


    是的,就是排除掉那几个文件夹。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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
请按任意键继续. . .

TOP

回复 5# xuxianking


    2楼代码第8行的echo删掉
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher



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

TOP

返回列表