[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
再来一个越来越长的,呵呵
  1. @echo off 2>nul 3>nul
  2. for /f "delims=" %%i in (%~0) do set "n=%%i"
  3. set /a n+=1,1/n && call echo 第%%n%%次运行
  4. pause>nul
  5. >>%~0 echo %n%
  6. goto :eof
  7. -1
复制代码

TOP

来个会越来越长的:
  1. @echo off
  2. rem 最后一行不能是空行。
  3. for /f %%a in ('findstr /v $ "%~f0"') do set /a n=%%a+1 & if "%%a" neq "pause" echo 已经运行%%a次
  4. >>"%~f0" (echo\& <nul set /p=%n%)
  5. pause & exit /b
复制代码
心绪平和,眼藏静谧。

TOP

原帖由 mkl 于 2008-10-24 22:52 发表
@echo off
if not exist time echo 0>time
set/p a=time
pause

echo 0>time只会生成一个空文件
***共同提高***

TOP

  1. @echo off
  2. if not exist time echo 0 >time
  3. set/p a=<time
  4. set/a a+=1
  5. echo 这是第%a%次运行程序
  6. echo %a% >time
  7. pause
复制代码

[ 本帖最后由 mkl 于 2008-10-25 11:00 编辑 ]

TOP

为啥各位大大都喜欢将代码写得那么紧凑?看得很辛苦哦...

TOP

  1. @echo off
  2. call :n
  3. calc
  4. exit /b
  5. -------------------------------------------------------------
  6. :n
  7. setlocal&set m="%~f0"
  8. for /f "usebackq" %%a in (%m%)do if defined f (set n=%%a)else if "%%a"=="::n" set f=1
  9. set/an+=1&if %n% geq 1 echo 已经运行了%n%次!&pause
  10. for /f "usebackq delims=" %%a in (%m%)do if defined f (echo.%%a>%m%&set f=)else if defined x (echo.%n%>>%m%&goto:eof)else echo.%%a>>%m%&if "%%a"=="::n" set x=1
  11. ::n
  12. 0
复制代码

TOP

没有读写注册表的?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 shqf 于 2008-10-24 21:40 发表
@echo off
set name=%~n0
set num=%name:~4%
if not "%num%" == "0" (echo 你已经运行本程序%num%次了&&goto count)

:count
set /a num=%num%+1
copy %0 test%num%.bat>nul
echo 欢迎光临 WWW.bathome.net
...

不合题意,不合要求!
***共同提高***

TOP

给出本人的解了

  1. ::0
  2. @echo off
  3. set /p num=<%~fs0
  4. set "num=%num:~2%"
  5. if %num% neq 0 echo.&echo 程序已运行了%num%次
  6. set /a num+=1&pause>nul
  7. for /f "delims=" %%i in (%~fs0) do (
  8.     if not defined flag (
  9.        echo ::%num%>%~fs0&set "flag=a"
  10.        ) else (
  11.        echo %%i>>%~fs0
  12.     )
  13. )
复制代码
***共同提高***

TOP

  1. @echo off
  2. set name=%~n0
  3. set num=%name:~4%
  4. if not "%num%" == "0" (echo 你已经运行本程序%num%次了&&goto count)
  5. :count
  6. set /a num=%num%+1
  7. copy %0 test%num%.bat>nul
  8. echo 欢迎光临 WWW.bathome.net
  9. echo 按任意键结束本程序...&pause>nul
  10. del %0
复制代码

[ 本帖最后由 shqf 于 2008-10-24 21:41 编辑 ]

TOP

回复 22楼 的帖子

回复more兄,好像看错题意了。第一次运行时什么也不会输出,到运行第二次时才输出“已经运行1次”。25楼同是如此的问题。
心绪平和,眼藏静谧。

TOP

  1. @echo off
  2. set code=你们的身影是我最长的期望
  3. for /l %%a in (10 -1 0) do (
  4. for /f "skip=2 tokens=*" %%b in ('find "%code%%%a" %0') do (if not "%%b" equ "" (set /a
  5. t=%%a,n=%%a+1&goto :a)))
  6. :a
  7. if "%t%" equ "0" (echo 我不会让你看见"%code%"的) else (echo 这是你第%t%次看见"%code%")
  8. >>%0 echo 你们的身影是我最长的期望%n%
  9. pause>nul
  10. 你们的身影是我最长的期望0
复制代码
不知道这样是否符合要求.
按照版主大大的要求改了一下,期待高效率的方法出现!!

[ 本帖最后由 qq641255849 于 2008-10-24 18:38 编辑 ]
1

评分人数

    • batman: 加分鼓励,效率是问题,还将无限增大原文件PB + 3

TOP


@echo off
echo i love bathome.net
if exist 1.txt goto b
if not exist 1.txt goto a

:a
>1.txt echo 1
goto :eof
:b
set /p i=<1.txt&&>2.txt echo 1&&set /p o=<2.txt
set /a a=%i%+%o%
echo %a% >1.txt
type 1.txt&del 2.txt
pause
goto :eof
pause

碍与我没时间了不能完善!就只能这样了!
本人思路:
把次数加在文件里。在拿出来
缺点:没掉出框框,因为我这里不能用msg命令不知道为什么!就没测试了!
=================================================================
做代码的时候搞出了1个问题请教!
-----
把代码

echo i love bathome.net

:a
>1.txt echo 1
goto :eof
:b
set /p i=<1.txt&&>2.txt echo 1&&set /p o=<2.txt
set /a a=%i%+%o%
echo %a% >1.txt
type 1.txt&del 2.txt
pause
goto :eof
if exist 1.txt goto b
if not exist 1.txt goto a

pause

蓝色的地方换了个位子就不能在1.txt文件里递加了!里面的内容一直是1
难道是运行了
:a标签后的 ?不过:a标签为什么可以运行?不是我用代码限制了吗?
if not exist 1.txt goto a


[ 本帖最后由 jellyhk 于 2008-10-24 05:09 编辑 ]
1

评分人数

    • batman: 加分鼓励,有错误PB + 5

TOP

more兄的代码貌似有点问题!
按任意键却继续运行程序?不好吧!

TOP

  1. :0
  2. @echo off
  3. for /f "delims=" %%a in ('type %0') do (set "str=%%a"&goto :out)
  4. :out
  5. set "str=%str::=%"
  6. set /a "str+=1"
  7. for /f "delims=" %%a in ('type %0') do (
  8.    if not defined god (
  9.       set god=hell
  10.       >%0 echo :%str%
  11.    ) else (
  12.        >>%0 echo %%a
  13.    )
  14. )
  15. if %str% gtr 1 (echo %str% times already) else (echo This is the first time)
  16. rem 如果上面这行有中文会出错,不解...
  17. set "god="&pause>nul&goto :%str%
复制代码


[ 本帖最后由 more 于 2008-10-24 00:52 编辑 ]

TOP

返回列表