windows - 共享计算机上多个用户的批处理脚本
问题描述
我对编码知之甚少,但我拼凑了一批清洁产品。
我无法弄清楚如何为共享计算机上的每个用户运行它。
我所拥有的如下:
cd C:\Users\%username%\AppData\Local
rmdir /S /Q Temp
cd C:\
del C:\Windows\Prefetch\*.* /Q/F/S
del C:\Windows\Temp\*.* /Q/F/S
del C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Recent Items\*.* /Q
del "C:\Users\%USERNAME%\AppData\Local\Mozilla\Firefox\Profiles\ilk2mwjz.default\cache2\*.*" /s /f /q /a
del "C:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Default\cache\*.*" /s /f /q /a
del "C:\Users\%USERNAME%\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC\*.*" /s /f /q /a
我for /d %%a in (C:\Users\*)
一开始有,但这似乎打破了它。
解决方案
看起来您正在尝试从每个用户中删除文件,您可以简单地使用一个FOR
语句来CD
指向文件所在的正确目录。贝娄就是一个例子。
:search
FOR /D %%G IN ("C:\Users\*") DO IF EXIST "%%~fG\desktop\*.ico" (
set correctDir=%%G\desktop
goto foundFile
)
goto :eof
:foundFile
cd "%correctDir%"
del /S *.ico
goto :search
.ico
上面的脚本将从每个用户桌面删除所有文件。它通过在每个桌面上搜索任何现有.ico
文件以及它将CD
提供给它的第一个结果来工作。循环将返回FOR
语句,直到在用户桌面上找不到更多.ico
的 '。代码的基础取自我对线程批处理脚本的原始但类似的响应,以删除所有用户桌面上的所有图标。
使用这种方法,我们可以为每个用户创建多个文件/文件夹。请务必以管理员身份运行此脚本,因为某些位置需要管理员权限才能删除对象!
@ECHO OFF
Rem These item's are not user specific so we can just remove them.
del C:\Windows\Prefetch\*.* /Q /F /S
del C:\Windows\Temp\*.* /Q /F /S
Echo Windows\Prefetch\*.* Was deleted for all users!
Echo Windows\Temp\*.* Was deleted for all users!
goto File1
Rem The following items will be removed from each users.
Rem First Object.
:File1
FOR /D %%G IN ("C:\Users\*") DO IF EXIST "%%~fG\AppData\Local\Temp\*.*" (
rem Here we need to CD one less layer to delete the folder.
set "correctDir=%%G\AppData\Local"
goto Found1
)
Echo Local\Temp\*.* Was deleted on all users!
goto File2
:Found1
cd "%correctDir%"
rmdir /S /Q Temp
goto File1
Rem Second object.
:File2
FOR /D %%G IN ("C:\Users\*") DO IF EXIST "%%~fG\AppData\Roaming\Microsoft\Windows\Recent Items\*.*" (
set "correctDir=%%G\AppData\Roaming\Microsoft\Windows\Recent Items"
goto Found2
)
Echo Windows\Recent Items\*.* Was deleted on all users!
goto File3
:Found2
cd "%correctDir%"
del /Q *.*
goto File2
Rem Third object.
:File3
FOR /D %%G IN ("C:\Users\*") DO IF EXIST "%%~fG\AppData\Local\Mozilla\Firefox\Profiles\ilk2mwjz.default\cache2\*.*" (
set "correctDir=%%G\AppData\Local\Mozilla\Firefox\Profiles\ilk2mwjz.default\cache2"
goto Found3
)
Echo ilk2mwjz.default\cache2\*.* Was deleted on all users!
goto File4
:Found3
cd "%correctDir%"
del /S /F /Q /A *.*
goto File3
Rem Forth object.
:File4
FOR /D %%G IN ("C:\Users\*") DO IF EXIST "%%~fG\AppData\Local\Google\Chrome\User Data\Default\cache\*.*" (
set "correctDir=%%G\AppData\Local\Google\Chrome\User Data\Default\cache"
goto Found4
)
Echo Default\cache\*.* Was deleted on all users!
goto File5
:Found4
cd "%correctDir%"
del /S /F /Q /A *.*
goto File4
Rem Fifth object.
:File5
FOR /D %%G IN ("C:\Users\*") DO IF EXIST "%%~fG\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC\*.*" (
set "correctDir=%%G\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC"
goto Found5
)
Echo Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC\*.* Was deleted on all users!
goto Completed
:Found5
cd "%correctDir%"
del /S /F /Q /A *.*
goto File5
Rem Finished Tasks.
:Completed
echo All Objects removed from users!
pause
goto :eof
对于命令基础知识,
FOR /D
%%G
使用变量遍历所有目录。%%~fG
展开为 中目录的完整路径%%G
。IF EXIST
检查文件是否存在。CD
指定要更改到父目录。goto :eof
退出脚本。
推荐阅读
- android - 您需要为您的 APK 或 Android App Bundle 使用不同的版本代码,因为您已经有一个版本代码为 1
- c# - 从使用 ItextSharp 或 PDFSharp 创建的扁平化 PDF 中提取文本
- python - 如果我使用在 Chrome 中单击后禁用按钮的 jquery 功能,为什么表单输入提交按钮不发送请求?
- javascript - 如何使用玩笑模拟 FileReader
- elasticsearch - 更新 Elasticsearch 文档中的字段
- javascript - 使用小书签自动登录网站不起作用
- rx-java - 订阅没有 onComplete 的 Hot Observable
- c# - 如何区分 Asp.Net Core 模型绑定中 JSON 中的空数据和非现有数据?
- r - 不能选择除可变长度以外的任何预测期数
- powershell - 接受路径作为文字路径、相对路径或相对于脚本根目录