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

[其他] 批处理删除自身代码最后一行

  1. @echo off
  2. for /f %%a in ('^(type "%~f0"^&echo;x^)^|find /c /v ""') do set "nLine=%%a"
  3. setlocal enabledelayedexpansion
  4. (for /l %%a in (2,1,%nLine%) do set /p Line_%%a=&set "Exec=!Exec!&echo;^!Line_%%a^!")<"%~f0"
  5. >"%~f0" (type nul%Exec%)
  6. pause
  7. goto :eof
  8. REM 这是最后一行,运行后会被清空
复制代码
这实际上是一种修改批处理自身但不影响继续运行的方法
只要理解CMD的工作原理和预处理机制,还可以做到每次运行代码变异的效果
1

评分人数

第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

回复 2# wc726842270
用set看一下exec的值就知道了,type nul纯粹打酱油
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

其实这个代码还有一个好处,在任何时候想要重写最后一行只需要调用>"%~f0" (type nul%Exec%)就可以了
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

返回列表