windows - 如何递归删除给定路径中的所有文件,但具有特定文件扩展名的文件除外?
问题描述
如果目录名称包含空格字符,例如“相机胶卷”,我在互联网上找到的答案不起作用
我尝试使用 for/dir/findstr 命令,但似乎没有任何效果
批处理文件内容:
@echo off
for /f %%F in ('dir c:\Users\melov\Pictures /s/b/a-d ^| findstr /v ".jpg"') do echo "%%F"
@echo on
请注意,我将 DEL 命令替换为 ECHO,以便模拟问题。
"c:\Users\melov\Pictures\desktop.ini"
"c:\Users\melov\Pictures\Camera" **(PROBLEM HERE)**
"c:\Users\melov\Pictures\ControlCenter4\Scan\CCF06182019.pdf"
"c:\Users\melov\Pictures\Saved" **(PROBLEM HERE)**
"c:\Users\melov\Pictures\Screenshots\desktop.ini"
"c:\Users\melov\Pictures\Screenshots\Screenshot"
"c:\Users\melov\Pictures\Screenshots\Screenshot"
原始文件夹结构
├───Camera Roll
├───ControlCenter4
│ ├───Email
│ ├───OCR
│ ├───Scan
│ └───SharePoint
├───cunha
├───Saved Pictures
└───Screenshots
我想删除除“.jpg”之外的所有文件
解决方案
cmd
有一个默认分隔符是空格,所以你只需告诉它更改默认分隔符。
@echo off
for /f "delims=" %%F in ('dir /b /s /a-d "c:\Users\melov\Pictures " ^| findstr /v ".jpg"') do echo "%%F"
类似的主体使用tokens=*
@echo off
for /f "tokens=*" %%F in ('dir /b /s /a-d "c:\Users\melov\Pictures " ^| findstr /v ".jpg"') do echo "%%F"
推荐阅读
- java - 如何向 ConnectableFlowable 发送取消信号?
- python - Python:快速迭代 Pandas DataFrame 列的方法,但需要在单元格内再次循环遍历数组
- css - 如何从 mat-stepper 中消除涟漪效应
- html - 表单输入未对齐
- google-cloud-platform - 使用数据流 Kafka 到 bigquery 模板时出错
- mongodb - 如何在 MongoDB 输入步骤中的 PDI 中使用日期?
- flask - 使用sqlalchemy的flask中的两个数据库,一个用于读取数据,一个用于写入数据,是否可以
- python - 文字不会排列
- prestashop - 无法让 Prestashop Bitnami Stack 1.7 在 Windows 上运行
- javascript - React js css loader 给出了编译失败的问题