[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 zm900612 于 2011-4-21 13:07 编辑

比较日期大小时可以不用去掉/号,因为位数是固定的,当成字符串比较也不会出错。
另一种思路是:
  1. @echo off
  2. for /f "tokens=12*" %%a in ('dir /s /a-d aa\ bb\ cc\ dd\^|findstr "^^2"^|sort /r') do if defined y (echo %%c) else if %%a gtr 2011/04/21 set y=1
  3. pause
复制代码

TOP

原来以为只有for /f "选项"中会出现这种情况,原来for/开关都有这种情况,受教!
batman 发表于 2011-4-21 12:22

运行for嵌套的bat时,打开echo on,会看到for语句运行前是先解释整个语块,语法无误时再解释子语句,然后扩展变量延迟,若在开关或参数中使用变量延迟,解释子语句时参数中的变量延迟尚未被解释,所以会提示“此时不应有!str!”。

TOP

我改的代码,call只做了一次,为什么?
@echo off
setlocal enableDelayedExpansion

for /l %%a in (1,1,10) do call:a "!FaultTop%%a!"
pause
exit

:a

for /r "%Filedir%\%~1" %%b in (*.*) do for /f ...
kris2000 发表于 2011-4-21 16:33

exit /b
::系统帮助中这样解释:指定要退出当前批处理脚本而不是 CMD.EXE

TOP

返回列表