bat 判断该文件夹内的字文件是目录还是文件
时间: 2023-11-28 21:04:24 浏览: 103
你可以使用 Windows 的命令行工具,如下所示:
```
@echo off
setlocal EnableDelayedExpansion
for /f "delims=" %%a in ('dir /b') do (
set attr=%%~a
set firstChar=!attr:~0,1!
if "!firstChar!"=="d" (
echo Folder: %%a
) else (
echo File: %%a
)
)
```
该脚本会遍历当前文件夹内的所有文件和子文件夹,并根据文件的属性判断它是一个文件还是一个文件夹。如果该文件的属性以字母 "d" 开头,那么它就是一个文件夹,否则它就是一个文件。
相关问题
win10 使用bat一键删除文件夹内的文件名称中 []的字符 并保留原文件
Win10 中,你可以使用批处理 (batch) 文件来批量删除文件夹内文件名中含有特定字符(如[])的文件。下面是一个基本的.bat脚本示例:
```cmd
@echo off
setlocal enabledelayedexpansion
set "dirPath=你的文件夹路径"
set "charToRemove=[]"
rem 遍历文件夹中的所有文件
for /R "%dirPath%" %%f in (*) do (
if not "!%%~nf!" == "!%%~nxf!" (
rem 判断文件名是否包含需要移除的字符
set "fileName=!%%~nxf!"
if "!fileName!" == "*!%charToRemove%*!" (
echo 删除文件: !fileName!
del "%%f" > nul
)
)
)
endlocal
```
在这个脚本里:
1. `@echo off` 关闭命令提示符的回显功能,让输出看起来更简洁。
2. `setlocal enabledelayedexpansion` 开启延迟环境变量扩展,以便在字符串操作中使用 `!` 来引用变量。
3. `dirPath` 设置你要操作的文件夹路径,`charToRemove` 设定需要移除的字符。
4. `for /R` 递归遍历指定目录及其子目录下的所有文件。
5. `if not ...` 和 `if ...` 分别检查文件名是否完整(不含[]),以及是否包含指定字符,如果满足条件则删除文件。
请注意替换 `set "dirPath=你的文件夹路径"` 中的内容为实际的文件夹路径,并将 `charToRemove=[]` 改为你想要移除的实际字符。
运行这个脚本前,请备份重要数据,因为一旦删除就无法恢复。
bat如何递归遍历文件夹并判断是该文件夹下是否包含指定后缀文件
在 Windows 操作系统下,可以使用以下的 BAT 脚本来递归遍历文件夹并判断是否包含指定后缀的文件:
```
@echo off
setlocal enabledelayedexpansion
set "folder=%1"
set "extension=%2"
if not defined folder (
set /p folder=请输入要遍历的文件夹路径:
)
if not defined extension (
set /p extension=请输入要查找的后缀名:
)
echo 正在遍历 %folder% 文件夹下的 %extension% 文件…
for /r "%folder%" %%i in (*.%extension%) do (
set "file=%%~nxi"
echo 找到了:!file!
)
echo 遍历完成。
```
脚本中,`set "folder=%1"` 和 `set "extension=%2"` 表示从命令行参数中获取要遍历的文件夹和要查找的后缀名。如果用户没有指定这些参数,则会通过 `set /p` 命令提示用户输入。
`for /r` 命令可以递归遍历指定文件夹下的所有文件和子文件夹。`%%i` 表示当前遍历到的文件路径,`%%~nxi` 表示去掉路径的文件名和后缀名。通过判断 `%%~nxi` 是否以指定后缀名结尾,即可确定是否是要查找的文件。
在命令提示符中执行脚本时,可以输入以下命令:
```
findfiles.bat "C:\path\to\folder" "txt"
```
其中,第一个参数表示要遍历的文件夹路径,第二个参数表示要查找的后缀名。如果省略参数,则会提示用户输入。
阅读全文