bat文件中如何取前一天的日期
时间: 2023-12-14 19:14:01 浏览: 71
在bat文件中取前一天的日期可以通过以下代码实现:
```
@echo off
setlocal EnableDelayedExpansion
REM 获取当前日期并减去一天
set "today=%date:~0,4%%date:~5,2%%date:~8,2%"
set /a "yesterday=today-1"
REM 将减去一天后的日期转换为年月日格式
set "year=!yesterday:~0,4!"
set "month=!yesterday:~4,2!"
set "day=!yesterday:~6,2!"
set "datestr=!year!-!month!-!day!"
echo %datestr%
```
这段代码将当前日期减去一天,并将减去一天后的日期转换为年月日格式,保存在变量`datestr`中,最后输出`datestr`即可。
相关问题
bat 根据修日期删除所有文件
bat文件是一种批处理文件,可以用来执行一系列的命令和操作。如果需要根据修改日期删除所有文件,可以创建一个bat文件来实现这个目的。
首先,需要打开一个文本编辑器,如记事本,然后输入以下命令:
```
forfiles /d -30 /C "cmd /c del @file"
```
这个命令的含义是,使用forfiles命令来选择所有最近30天修改过的文件,然后执行del命令来删除这些文件。
接着,需要保存这个文本文件并将其命名为.bat扩展名,比如deletefiles.bat。
然后,双击运行这个deletefiles.bat文件,系统就会执行其中的命令,删除所有最近30天修改过的文件。
需要注意的是,这个bat文件执行删除操作时会立即删除文件,无法通过回收站找回,所以在执行前一定要确认需要删除的文件是正确的。
通过编写这个简单的bat文件,就可以很方便地根据修改日期删除所有文件,而不用一个一个手动删除,提高了效率和便捷性。
删除3天前的目录下的所有文件,但是不删除名字中有test的文件的bat脚本
### 回答1:
这是一个用来删除 3 天前目录下的所有文件,但不删除名字中包含 "test" 的文件的 .bat 脚本:
```
@echo off
forfiles -p "C:\path\to\directory" -s -m *.* -d -3 -c "cmd /c if not @fname=='test*' del @path"
```
在这个脚本中,我们使用了 `forfiles` 命令来循环遍历 3 天前目录下的所有文件(用 `-d -3` 选项指定)。然后,我们使用 `if not @fname=='test*'` 语句来判断文件名是否以 "test" 开头,如果不是,就使用 `del` 命令删除该文件。
注意:确保将上面的脚本中的 "C:\path\to\directory" 替换为你的目录的实际路径。
希望这个脚本能够帮到你!
### 回答2:
你可以使用以下的批处理脚本来删除3天前的目录下的所有文件,但保留名字中有"test"的文件:
```batch
@echo off
setlocal
:: 设置目标目录和文件名关键词
set "target_dir=C:\目标目录的路径"
set "file_keyword=test"
:: 获取当前日期和3天前的日期
for /f "usebackq delims=" %%a in (`powershell -command "Get-Date -Format yyyy-MM-dd"`) do set current_date=%%a
for /f "usebackq delims=" %%a in (`powershell -command "$date = Get-Date; $date = $date.AddDays(-3); $date.ToString('yyyy-MM-dd')"`) do set three_days_ago=%%a
:: 切换到目标目录
pushd "%target_dir%"
:: 循环遍历该目录下的所有文件
for /r %%f in (*) do (
:: 获取文件的创建日期
for /f "usebackq delims=" %%d in (`powershell -command "(Get-Item '%%~ff').CreationTime.Date.ToString('yyyy-MM-dd')"`) do set file_date=%%d
:: 如果文件创建日期早于3天前的日期,并且文件名不包含关键词,则删除
if "%file_date%" LSS "%three_days_ago%" (
echo Deleting %%f
del "%%f" /q
) else (
:: 如果文件名包含关键词,则跳过删除
echo Skipping %%f
findstr /i /c:"%file_keyword%" "%%~nxf" >nul
if errorlevel 1 (
echo Deleting %%f
del "%%f" /q
)
)
)
:: 切换回原目录
popd
:: 结束脚本
exit /b
```
请注意替换脚本中`target_dir`为你想要操作的目录的路径,并根据需要修改`file_keyword`以匹配你想要保留的文件名中的关键词。
### 回答3:
你可以使用以下的bat脚本来删除3天前的目录下的所有文件,但是保留名字中有"test"的文件:
```bat
@echo off
setlocal
set "directory=C:\path\to\your\directory"
REM 设置要删除的文件的最后修改时间为3天前的日期
for /f "usebackq delims=" %%d in (`powershell "(Get-Date).AddDays(-3).ToString('yyyy-MM-dd')"`) do set "deletedate=%%d"
REM 遍历目录下的文件
for /r "%directory%" %%f in (*) do (
REM 获取文件名
set "filename=%%~nxf"
REM 检查文件名中是否包含"test",如果包含则跳过删除
echo "%filename%" | findstr /i "test" >nul
if not errorlevel 1 (
echo "Skipping file: %filename%"
) else (
REM 检查文件的最后修改时间是否早于删除日期
for /f "usebackq delims=" %%a in (`powershell "(Get-Item '%%~f').LastWriteTime.toString('yyyy-MM-dd')"`) do (
if "%%a" LSS "%deletedate%" (
REM 删除文件
echo "Deleting file: %%~f"
del "%%~f" /f /q
)
)
)
)
endlocal
```
请将其中的`C:\path\to\your\directory`替换为你要删除文件的目录的路径。这段脚本会首先设置要删除的文件的最后修改时间为3天前的日期,然后遍历目录下的所有文件。对于每个文件,它会检查文件名中是否包含"test",如果包含则跳过删除;否则,它会检查文件的最后修改时间是否早于删除日期,如果是,则删除该文件。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)