无忧启动论坛
标题:
有请批处理大佬
[打印本页]
作者:
newyun
时间:
昨天 17:23
标题:
有请批处理大佬
帮我写个批处理删除C盘除了C:\Windows C:\Program Files (x86) C:\Program Files C:\ProgramData这4个文件夹以外其它所有文件夹的*.xls *.xlsm *.xlsx *.xlsb这4种文件,要注意的是排除的4个夹是包含空格的请用引号,这个用gpt4写了一下午,期间改了好多次就是没一次能实现效果的
作者:
YWFhYmJi
时间:
昨天 18:47
@echo off
setlocal enabledelayedexpansion
set dirs=
for /f "tokens=*" %%i in ('dir /ad /b C:\') do (
set flag=0
if "%%~i"=="Windows" set flag=1
if "%%~i"=="Program Files (x86)" set flag=1
if "%%~i"=="Program Files" set flag=1
if "%%~i"=="ProgramData" set flag=1
if "!flag!"=="0" set "dirs=!dirs! "C:\%%i\*.xls" "C:\%%i\*.xlsm" "C:\%%i\*.xlsx" "C:\%%i\*.xlsb""
)
for /f "tokens=*" %%i in ('dir /a-d /s /b %dirs%') do (
::echo %%i
del /f /a /q "%%~i"
)
复制代码
作者:
yyz2191958
时间:
昨天 18:59
YWFhYmJi 发表于 2025-1-10 18:47
助人为乐
作者:
lsbdx
时间:
昨天 19:22
论坛的大佬比GPT4厉害!
作者:
vaf
时间:
昨天 19:36
用 Robocopy.exe 可以轻松实现.
Robocopy.exe /? 琢磨琢磨.
作者:
窄口牛
时间:
昨天 19:38
那四个里有可能有这四种文件吗吗?你这要求就有点说不来的感觉。
作者:
pole87898843
时间:
昨天 19:39
感谢分享
作者:
chanriy
时间:
昨天 20:14
还可以提要求吗
作者:
BEIKING
时间:
昨天 21:12
@echo off
for /f "delims=" %%i in ('dir C: /a:d /b') do if "%%~i" neq "Program Files" if "%%~i" neq "Program Files (x86)" if "%%~i" neq "ProgramData" if "%%~i" neq "Windows" cd /d "C:\%%~i" 2>nul&for /f "delims=" %%j in ('dir /a-d /s /b "*.xls" "*.xlsm" "*.xlsx" "*.xlsb" 2^>nul') do echo "%%~j"&del /f /q "%%~j"
复制代码
管理员权限执行
作者:
pengfangzhi
时间:
昨天 21:27
要编写一个批处理脚本来删除C盘中除了指定的四个文件夹以外的所有`.xls`、`.xlsm`、`.xlsx`和`.xlsb`文件,首先,我们需要确保:
1. 排除的四个文件夹:`C:\Windows`、`C:\Program Files (x86)`、`C:\Program Files`、`C:\ProgramData`;
2. 只删除C盘根目录下其他文件夹中的目标文件类型;
3. 正确处理文件夹和路径中有空格的情况。
可以使用`for /d`和`del`命令来遍历和删除文件。以下是一个简单的批处理脚本实现:
```batch
@echo off
setlocal
:: 设置排除的文件夹路径
set exclude1="C:\Windows"
set exclude2="C:\Program Files (x86)"
set exclude3="C:\Program Files"
set exclude4="C:\ProgramData"
:: 遍历 C 盘上的所有文件夹
for /d %%F in (C:\*) do (
if /i not "%%F"==%exclude1% (
if /i not "%%F"==%exclude2% (
if /i not "%%F"==%exclude3% (
if /i not "%%F"==%exclude4% (
:: 删除该文件夹内的目标文件
del /q "%%F\*.xls" "%%F\*.xlsm" "%%F\*.xlsx" "%%F\*.xlsb" 2>nul
)
)
)
)
)
echo 删除完成
endlocal
pause
```
### 说明:
1. **排除文件夹:** 我们使用 `if /i not "%%F"==%excludeX%` 来检查每个文件夹是否是要排除的文件夹,`/i` 参数确保忽略大小写。
2. **删除操作:** `del /q "%%F\*.ext"` 用来删除每个文件夹中的`.xls`、`.xlsm`、`.xlsx`和`.xlsb`文件。`2>nul` 用于将删除过程中的错误(如文件夹中没有符合条件的文件)输出重定向到空设备,以避免显示错误消息。
3. **批处理命令 `pause`**:用来在批处理脚本结束时暂停,方便你查看是否有任何错误消息。
### 使用方法:
1. 将此批处理脚本保存为 `.bat` 文件。
2. 以管理员身份运行批处理脚本,以确保有权限删除文件。
### 注意:
- 请在使用此脚本前,**备份重要数据**,以免误删重要文件。
- 如果脚本运行时没有删除所有的目标文件,可能是因为没有对某些文件夹有权限,或者文件夹中没有符合条件的文件。
希望这个脚本能够帮助你完成任务!
复制代码
作者:
newswan
时间:
昨天 23:53
AI
$excludedFolders = "C:\Windows*","C:\Program Files (x86)*","C:\Program Files*","C:\ProgramData*"
$folders = Get-ChildItem -Path C:\ -Directory -ErrorAction SilentlyContinue | Where-Object {$_.FullName -notmatch ($excludedFolders -join "|")}
$excelFiles = foreach ($folder in $folders) {
Get-ChildItem -Path $folder.FullName -Include *.xls,*.xlsm,*.xlsx,*.xlsb -ErrorAction SilentlyContinue
}
# 输出结果
if ($excelFiles) {
$excelFiles | Select-Object FullName
} else {
Write-Host "未找到任何Excel文件。"
}
复制代码
欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/)
Powered by Discuz! X3.3