中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-13 18:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 一个关于数据删除的问题请教.
31 发表于 2008-02-04 01:56 ·  中国 四川 成都 电信
初级用户
★★
积分 110
发帖 50
注册 2008-01-18 15:02
UID 108931
性别 男
状态 离线
真奇了怪了
我再试
32 发表于 2008-02-04 01:58 ·  中国 四川 成都 电信
初级用户
★★
积分 110
发帖 50
注册 2008-01-18 15:02
UID 108931
性别 男
状态 离线
我是把你的代码粘贴到TXT里,然后修改属性成BAT,这样没错吧?
33 发表于 2008-02-04 02:02 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
你是管理员权限用户吗?
XP系统是不是精简版的ghostxp?
命令提示符下cscript.exe /?有该命令吗?
第一高手 第二高手

34 发表于 2008-02-04 02:06 ·  中国 四川 成都 电信
初级用户
★★
积分 110
发帖 50
注册 2008-01-18 15:02
UID 108931
性别 男
状态 离线
是管理员权限用户
不是精简版的
有cscript.exe 命令
35 发表于 2008-02-04 02:11 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
那出现 "此时不应有-!"是因为路径没有选对,或者该目录是空目录,代码没作这样的排错处理
第一高手 第二高手

36 发表于 2008-02-04 02:13 ·  中国 四川 成都 电信
初级用户
★★
积分 110
发帖 50
注册 2008-01-18 15:02
UID 108931
性别 男
状态 离线
可是我放的那个目录里边是有文件和其他目录的啊,晕,简直不懂了
今天真麻烦你了
37 发表于 2008-02-04 02:32 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
知道什么原因了,我贪图代码简洁少了2个转换步骤,也奇怪2000不会出现xp反而出现这样的情况

@echo off
regedit /e "%temp%\bak.reg" "HKEY_CURRENT_USER\Control Panel\International"
call :DateFormat

>tmp.vbs echo Wscript.echo FormatDateTime (DateAdd("d",-7,Date),2)
for /f "delims=" %%i in ('cscript.exe //nologo tmp.vbs') do set aDate=%%i
del tmp.vbs
ver|find "2000">nul&&set aDate=%aDate:~2%
set aDate=%aDate:-=%
setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir/s/b/a-d xxx\*.*') do (
set fileDate=%%~ti
set fileDate=!fileDate:~0,-6!
set fileDate=!fileDate:-=!
if !fileDate! LSS %aDate% del /q/f "%%i"
)
regedit /s "%temp%\bak.reg"
del /q "%temp%\bak.reg"
pause
exit

:DateFormat
>aDate.reg echo REGEDIT4
>>aDate.reg echo.
>>aDate.reg echo
>>aDate.reg echo "sShortDate"="yyyy-MM-dd"
>>aDate.reg echo "sDate"="-"
regedit /s aDate.reg
del aDate.reg
goto:eof
第一高手 第二高手

38 发表于 2008-02-04 02:39 ·  中国 四川 成都 电信
初级用户
★★
积分 110
发帖 50
注册 2008-01-18 15:02
UID 108931
性别 男
状态 离线
这个问题是解决了
我把机器时间定在2008-1-9日,删2008-1-2的文件,报"系统找不到指定的文件"
39 发表于 2008-02-04 02:50 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
系统找不到指定的文件
是('dir/s/b/a-d xxx\*.*')无效路局才出现的
正确方法是('dir/s/b/a-d "D:\FTPSERVER\*.*"')
哎~你也应该掌握点相关知识呀
有问题明天继续吧
第一高手 第二高手

40 发表于 2008-02-04 02:52 ·  中国 四川 成都 电信
初级用户
★★
积分 110
发帖 50
注册 2008-01-18 15:02
UID 108931
性别 男
状态 离线
嘿,谢谢了
晚安
41 发表于 2008-02-04 03:00 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
UID 42345
状态 离线
Originally posted by fzp1978321 at 2008-2-3 19:48:
我在XP上运行了下,是删除C:\1002里7天前的文件,在CMD.EXE如下显示:

7:
C:\1002
'NEX'不是内部或外部命令,也不是可运行的程序
或批处理文件
找不到操作 ...

@echo off
SET/p TT=天数:
SET/p PH=路径:
set p1=%date:~0,4%
set p2=%date:~5,2%
set p3=%date:~8,2%
setlocal enabledelayedexpansion
for /l %%a in (1,1,3) do (
for /f "delims=0 tokens=*" %%i in ("!p%%a!") do set p%%a=%%i
)
if %p3% gtr %TT% goto ppp
:nxt
set/a p2-=1
if %p2% equ 0 set/a p1-=1&&set p2=12
SET/a PN1=%p1%%%4
set PN2=28
if %PN1% EQU 0 set pN2=29
for /f "tokens=%p2%" %%i in ("31 %pN2% 31 30 31 30 31 31 30 31 30 31") do set/a p3=%p3%+%%i
if %p3% leq %tt% goto nxt
:ppp
set/a p3=%p3%-%tt%
set p2=0%p2%
set p2=%p2:~-2,2%
set p3=0%p3%
set p3=%p3:~-2,2%
for %%i in ("%PH%\*") do set t=%%~ti &&call :loop "%%~fi"
pause
goto :eof
:loop
if not "%~1" == "%~f0" (
IF %p1%%p2%%p3% equ %t:~0,4%%t:~5,2%%t:~8,2% del "%~1" /S/Q/F
)
抱歉 漏一标签 不知道现在怎么样 我这里不是2000系统

[ Last edited by terse on 2008-2-4 at 03:12 AM ]
简单!简单!再简单!
42 发表于 2008-02-04 03:59 ·  中国 四川 成都 电信
初级用户
★★
积分 110
发帖 50
注册 2008-01-18 15:02
UID 108931
性别 男
状态 离线
20:
C:\1002
'NEX'不是内部或外部命令,也不是可运行的程序
或批处理文件
找不到操作

变成这样了,晕
也麻烦你了
我删20天前的数据
43 发表于 2008-02-04 12:34 ·  中国 四川 成都 电信
初级用户
★★
积分 110
发帖 50
注册 2008-01-18 15:02
UID 108931
性别 男
状态 离线
fastslz,我今天试了下,我在C:\下建立了个FTP文件夹,里面自己做了几个日期为2008-02-04的文件,然后去执行,但是在CMD.EXE中只显示"请按任意键继续",啥动静都没,咋回事呢?
执行代码如下:
@echo off
regedit /e "%temp%\bak.reg" "HKEY_CURRENT_USER\Control Panel\International"
call :DateFormat

>tmp.vbs echo Wscript.echo FormatDateTime (DateAdd("d",-7,Date),2)
for /f "delims=" %%i in ('cscript.exe //nologo tmp.vbs') do set aDate=%%i
del tmp.vbs
ver|find "2000">nul&&set aDate=%aDate:~2%
set aDate=%aDate:-=%
setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir/s/b/a-d "C:\ftp\*.*"') do (
set fileDate=%%~ti
set fileDate=!fileDate:~0,-6!
set fileDate=!fileDate:-=!
if !fileDate! LSS %aDate% del /q/f "%%i"
)
regedit /s "%temp%\bak.reg"
del /q "%temp%\bak.reg"
pause
exit

:DateFormat
>aDate.reg echo REGEDIT4
>>aDate.reg echo.
>>aDate.reg echo [HKEY_CURRENT_USER\Control Panel\International]
>>aDate.reg echo "sShortDate"="yyyy-MM-dd"
>>aDate.reg echo "sDate"="-"
regedit /s aDate.reg
del aDate.reg
goto:eof
pause


执行结果:"请按任意键继续"
44 发表于 2008-02-04 13:00 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
UID 42345
状态 离线
Originally posted by fzp1978321 at 2008-2-4 03:59:
20:
C:\1002
'NEX'不是内部或外部命令,也不是可运行的程序
或批处理文件
找不到操作

变成这样了,晕
也麻烦你了
我删20天前的数据


晕了
整个P里都找不到NEX 怎么会这样
我这里测试都好了
简单!简单!再简单!
45 发表于 2008-02-04 14:09 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
没有可删除的文件就显示请按任意键继续

del /q "%temp%\bak.reg"
pause
exit
中间那个pause去掉就可以了
另外你还可以用rar.exe或 WinRAR压缩文件小于%aDate%日期的文件压缩好再删除(有该功能参数的)这样3行VBS代码就解决你全部问题.
我现在办年货了,没时间帮你了,自己看rar帮助琢磨下吧
第一高手 第二高手

论坛跳转: