BAT批处理问题1

来源:百度知道 编辑:UC知道 时间:2024/05/08 02:28:55
问题1:在批处理中我用什么函数可以得到系统时间只要年月日(如:20080505)然后再赋值给变量.
问题2;在批处理中的FOR语句中有没有判断最后个文件的函数.(譬如:我C:下实际有十个文件夹,但我想删除前面9个文件夹保留最后一个该怎么做)

问题1:
求日期简单,用变量替换掉日期里面的"-",或是直接写成echo %date:-=%也行..

@echo off
set da=%date:-=%
echo 今天日期是: %da%
pause

问题2:
你想保留最后一个文件夹,删除其它的,for语句是没这个直接参数或是直接用法的..
不过也可以办到.问题是你所说的"最后一个文件夹"是怎么自义的,文件夹不能确定的说哪个排在最后,看你按什么排序方式了,按大小,日期等,我这以按名称排序为例子,删除排在最后的一个文件夹..
@echo off
setlocal enabledelayedexpansion
set num=0
for /f "delims=" %%a in ('dir /ad /s /b /o-n') do (
set /a num+=1
if !num!==1 (echo %%a文件夹已被保留!) else rd /s /q "%%a" >nul
)
pause

这个搞法主要是结合dir命令来实现的:
dir /ad /b /o-n 使用空格式列出所有目录,包括子目录
/on参数就是按名称排序,如果有a,b,c,d四个文件夹,就依次显示abcd,当然还有其它的排序方式,你可以根据自己的需要改一下,具体用法dir/?查看..
/o-n参数就是反过来排序的意思,显示dcba.则删除d这个文件夹,

再利用num换算下, for每执行一行,num就累加1,当num值是1的时候肯定就是排在最前面的文件夹了,保留这个,如果num值不是1则是其它排在后面的文件夹了,就执行删除命令..