Windows 遍历文件 并输出文件生成时间并赋值给新变量 bat脚本
时间: 2024-10-25 12:15:21 浏览: 28
在Windows批处理脚本中(也称为`.bat` 文件),你可以使用`FOR /F`命令结合`DIR`或`DATE`命令来遍历目录、获取文件的创建时间,并将其存储到变量中。以下是一个简单的示例:
```batch
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b /a-d /o-d ^| findstr /v ".git"') do (
set "fileTime=%%~ti"
echo 文件名: %%i, 创建时间: !fileTime!
)
endlocal
```
这个脚本的工作原理如下:
1. `@echo off` 关闭命令提示符显示每行命令。
2. `setlocal enabledelayedexpansion` 启用延迟环境变量扩展,以便能够修改动态生成的变量。
3. `for /f` 循环遍历当前目录下所有非隐藏的文件(`/a-d`),按日期倒序排列(`/o-d`)。
4. `dir /b` 获取文件名只 (`/b`),排除 `.git` 文件(使用`findstr`过滤掉)。
5. `%%~ti` 获取文件的时间戳,格式通常是年月日小时分钟秒。
6. `echo` 输出文件名和创建时间。
如果你想将文件时间保存到单独的变量中,可以替换`echo`部分的内容,但请注意,在批处理中直接从时间戳字符串解析可能会有些复杂,你可能需要额外的处理步骤。
相关问题
bat脚本判断文件是否存在,文件是一个变量
在bat脚本中,判断一个变量表示的文件是否存在,可以通过将变量名放在IF EXIST命令中来实现。假设变量名为filename,可以使用以下语法:
```
IF EXIST %filename% (
命令1
) ELSE (
命令2
)
```
其中,%filename%表示要判断的文件名变量,可以在IF命令中直接引用。
例如,以下脚本可以判断一个变量表示的文件是否存在:
```
@echo off
SET filename="test.txt"
IF EXIST %filename% (
echo 文件存在
) ELSE (
echo 文件不存在
)
```
在脚本中,可以根据实际需求来设置变量的值。如果需要判断多个文件是否存在,可以使用FOR循环遍历文件列表,并将每个文件名赋值给变量来判断是否存在。需要注意的是,变量名需要使用延迟扩展来引用,即使用!变量名!的形式来替代%变量名%,否则会出现解析错误。例如:
```
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%i IN (test1.txt test2.txt test3.txt) DO (
SET filename=%%i
IF EXIST !filename! (
echo !filename! 存在
) ELSE (
echo !filename! 不存在
)
)
```
在以上的代码中,使用了FOR循环遍历文件列表,将每个文件名赋值给filename变量,并使用延迟扩展来引用变量。
Bat脚本获取当前目录下所有文件输出至文件
可以使用如下的Bat脚本来获取当前目录下所有文件并输出至文件中:
```
@echo off
setlocal EnableDelayedExpansion
set output_file=output.txt
for /r %%i in (*) do (
set "file_path=%%i"
echo !file_path!>>%output_file%
)
echo "Done."
```
其中,`set output_file=output.txt` 用于设置输出文件名,可以根据你的需要进行修改。`for /r %%i in (*)` 用于遍历当前目录下的所有文件,包括子文件夹中的文件。`set "file_path=%%i"` 用于将当前遍历到的文件路径赋值给变量 `file_path`。`echo !file_path!>>%output_file%` 用于将变量 `file_path` 的值输出至文件中,每个文件路径占一行。最后,输出 "Done." 表示脚本执行完成。
阅读全文